Library Descriptor
Library descriptor is a simple file with an XML-like structure that specifies version number, paths to header files and dynamic libraries and optionally some other information.
The easiest library descriptor has the following structure:
<version> /* Version of the library */ </version> <headers> /* The list of paths to header files and/or directories with header files, one per line */ </headers> <libs> /* The list of paths to dynamic libraries and/or directories with dynamic libraries, one per line */ </libs>
Additional sections of the descriptor:
<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> <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 dynamic libraries that should not be processed, one name per line */ </skip_libs>
ABI Compliance Checker specific sections:
<skip_constants> /* The list of constants that should not be checked, one name per line */ </skip_constants>
API Sanity Autotest specific sections:
<defines> /* Add defines at the headers compiling stage, one per line: #define A B #define C D */ </defines> <libs_depend> /* The list of paths to dynamic libraries that should be provided to gcc to resolve undefined symbols (if NEEDED elf section doesn't include it) */ </libs_depend> <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> <skip_warnings> /* The list of warnings that should not be shown in the report, one pattern per line */ </skip_warnings>
Examples
This section demonstrates descriptor examples. See also descriptors for libraries in Moblin OS.
<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>