Library Descriptor

Library descriptor is a simple XML-file that specifies version number, paths to header files and shared libraries and optionally some other information.

Contents

Primary Sections

 <version>
     /* Version of the library */
 </version>
   
 <headers>
     /* The list of paths to header files or/and
        directories with header files, one per line */
 </headers>
   
 <libs>
     /* The list of paths to shared libraries or/and
        directories with shared libraries, one per line */
 </libs>

Optional Sections

 <include_paths>
     /* The list of paths to be searched for header files
        needed for compiling of library headers, one per line.
        NOTE: If you define this section then the tool
        will not automatically detect include paths */
 </include_paths>
 
 <add_include_paths>
     /* The list of include paths that should be added
        to the automatically detected include paths, one per line */
 </add_include_paths>
 
 <gcc_options>
     /* Additional gcc options, one per line */
 </gcc_options>
 
 <include_preamble>
     /* The list of header files that should be included before other headers, one per line.
        For example, it is a tree.h for libxml2 and ft2build.h for freetype2 library */
 </include_preamble>
 
 <defines>
     /* Add defines at the headers compiling stage, one per line:
          #define A B
          #define C D */
 </defines>
 
 <opaque_types>
     /* The list of opaque types, one per line */
 </opaque_types>
   
 <skip_interfaces>
     /* The list of functions (mangled/symbol names in C++)
        that should be skipped while testing, one per line */
 </skip_interfaces>
 
 <skip_headers>
     /* The list of headers that should not be processed, one name per line */
 </skip_headers>
 
 <skip_libs>
     /* The list of shared libraries that should not be processed, one name per line */
 </skip_libs>

Specific Sections

ABI Compliance Checker (ACC) specific sections:

 <skip_constants>
     /* The list of constants that should not be checked, one name per line */
 </skip_constants>

API Sanity Checker (ASAT) specific sections:

 <libgroup>
   <name>
       /* Name of the library group */
   </name>
 
   <interfaces>
       /* The list of functions (mangled/symbol names in C++)
          that should be grouped, one per line */
   </interfaces>
 </libgroup>
 
 <out_params>
     /* Associating of out(returned)-parameters
        with interfaces, one entry per line:
          function_name:param_name
                or
          function_name:param_number */
 </out_params>
 
 <libs_depend>
     /* The list of paths to shared libraries that should be provided to gcc
        to resolve undefined symbols (if NEEDED elf section doesn't include it) */
 </libs_depend>
 
 <skip_warnings>
     /* The list of warnings that should not be shown in the report, one pattern per line */
 </skip_warnings>

Examples

This section demonstrates examples of XML descriptors. See also descriptors for Moblin libraries.

 <version>
     0.3.4
 </version>
 
 <headers>
     /usr/local/libssh/0.3.4/include/
 </headers>
 
 <libs>
     /usr/local/libssh/0.3.4/lib/
 </libs>
 <version>
     1.28.0
 </version>
 
 <headers>
     /usr/local/atk-1.28.0/include/atk-1.0/atk/atk.h
 </headers>
 
 <libs>
     /usr/local/atk-1.28.0/lib/
 </libs>
 
 <include_paths>
     /usr/include/glib-2.0/
     /usr/lib/glib-2.0/include/
 </include_paths>
 <version>
     2.7.6
 </version>
 
 <headers>
     /usr/local/libxml2-2.7.6/include/
 </headers>
 
 <libs>
     /usr/local/libxml2-2.7.6/lib/libxml2.so.2.7.6
 </libs>
 
 <include_preamble>
     tree.h
 </include_preamble>
 <version>
     1.3.2
 </version>
 
 <headers>
     /usr/local/libX11-1.3.2/include/
 </headers>
 
 <libs>
     /usr/local/libX11-1.3.2/lib/
 </libs>
 
 <include_preamble>
     Xlib.h
 </include_preamble>
  • Qt4 (libQtCore)
 <version>
     4.6.0
 </version>
 
 <headers>
     /usr/local/Qt-4.6.0/include/QtCore/QtCore
 </headers>
 
 <libs>
     /usr/local/Qt-4.6.0/lib/libQtCore.so.4
 </libs>
 
 <include_paths>
     /usr/local/Qt-4.6.0/include/
 </include_paths>
 
 <gcc_options>
    -fvisibility=hidden
    -fvisibility-inlines-hidden
    -fPIC
    -Wall
    -W
    -D_REENTRANT
    -DQT_NO_CAST_FROM_ASCII
    -DQT_NO_CAST_TO_ASCII
    -DQT_NO_STL
    -DQT_SHARED
    -DQT3_SUPPORT
 </gcc_options>
 <version>
     1.1.22
 </version>
 
 <headers>
     /usr/local/libxslt-1.1.22/include/
 </headers>
 
 <libs>
     /usr/local/libxslt-1.1.22/lib/libxslt.so
     /usr/local/libxslt-1.1.22/lib/libexslt.so
 </libs>
 
 <include_paths>
     /usr/include/libxml2/
 </include_paths>
 
 <include_preamble>
     xsltInternals.h
 </include_preamble>
 <version>
     2.26.1
 </version>
 
 <headers>
     /usr/local/libxml++-2.26.1/include/
     /usr/local/libxml++-2.26.1/lib/libxml++-2.6/include/
 </headers>
 
 <libs>
     /usr/local/libxml++-2.26.1/lib/
 </libs>
 
 <include_paths>
     /usr/include/glib-2.0/
     /usr/lib/glib-2.0/include/
     /usr/include/glibmm-2.4/
     /usr/lib/glibmm-2.4/include/
 </include_paths>
 <version>
     1.26.0
 </version>
 
 <headers>
     /usr/local/pango-1.26.0/include/
 </headers>
 
 <libs>
     /usr/local/pango-1.26.0/lib/
 </libs>
 
 <include_paths>
     /usr/include/glib-2.0/
     /usr/lib/glib-2.0/include/
     /usr/include/cairo/
     /usr/include/freetype2/
     /usr/include/X11/
 </include_paths>
 
 <include_preamble>
     pango.h
 </include_preamble>
 <version>
     2.18.4
 </version>
 
 <headers>
     /usr/local/gtk+-2.18.4/include/gtk-2.0/gdk/gdk.h
     /usr/local/gtk+-2.18.4/include/gtk-2.0/gtk/gtk.h
     /usr/local/gtk+-2.18.4/include/gail-1.0/
     /usr/local/gtk+-2.18.4/include/gtk-unix-print-2.0/
 </headers>
 
 <libs>
     /usr/local/gtk+-2.18.4/lib/
 </libs>
 
 <include_paths>
     /usr/include/atk-1.0/
     /usr/include/glib-2.0/
     /usr/lib/glib-2.0/include/
     /usr/include/cairo/
     /usr/include/pango-1.0/
 </include_paths>
 <version>
     2.22.2
 </version>
 
 <headers>
     /usr/local/glib-2.22.2/include/glib-2.0/glib.h
     /usr/local/glib-2.22.2/include/glib-2.0/glib-object.h
     /usr/local/glib-2.22.2/include/glib-2.0/gmodule.h
 </headers>
 
 <libs>
     /usr/local/glib-2.22.2/lib/
 </libs>
 
 <include_paths>
     /usr/local/glib-2.22.2/lib/glib-2.0/include/
 </include_paths>
 <version>
     2.28.0
 </version>
 
 <headers>
     /usr/local/libsoup-2.28.0/include/
 </headers>
 
 <libs>
     /usr/local/libsoup-2.28.0/lib/
 </libs>
 
 <include_paths>
     /usr/include/glib-2.0/
     /usr/lib/glib-2.0/include/
 </include_paths>
 <version>
     4.9.9.1
 </version>
 
 <headers>
     /usr/local/include/allegro5/allegro.h
 </headers>
 
 <libs>
     /usr/local/lib/liballegro-4.9.9.so
 </libs>
 <version>
     1.9.0.1
 </version>
 
 <headers>
     /usr/local/mathgl-1.9.0.1/include/
 </headers>
 
 <libs>
     /usr/local/mathgl-1.9.0.1/lib/
 </libs>
 
 <include_paths>
     /usr/local/gsl-1.9/include/
 </include_paths>
 <version>
     1.9
 </version>
 
 <headers>
     /usr/local/gsl-1.9/include/
 </headers>
 
 <libs>
     /usr/local/gsl-1.9/lib/
 </libs>
 
 <include_preamble>
     stdlib.h
 </include_preamble>
 <version>
     7
 </version>
 
 <headers>
     /usr/local/libjpeg-7/include/jpeglib.h
 </headers>
 
 <libs>
     /usr/local/libjpeg-7/lib/
 </libs>
 
 <include_preamble>
     stdio.h
 </include_preamble>