Fork me on GitHub

XML-Descriptor

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

Table of 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>

<skip_include_paths>
    /* The list of include paths that will be removed from
    the list of automatically generated include paths, one
    per line */
</skip_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>

<add_namespaces>
    /* The list of namespaces that should be added to the
    alanysis  if the tool cannot find them automatically,
    one per line */ 
</add_namespaces>

<skip_types>
    /* The list of data types, that
    should not be checked, one per line */
</skip_types>

<skip_symbols>
    /* The list of functions (mangled/symbol names in C++),
    that should not be checked, one per line */
</skip_symbols>

<skip_namespaces>
    /* The list of C++ namespaces, that
    should not be checked, one per line */
</skip_namespaces>

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

<skip_headers>
    /* The list of header files and/or directories
    with header files that should not be checked, one per
    line */
</skip_headers>

<skip_libs>
    /* The list of shared libraries and/or directories
    with shared libraries that should not be checked, one
    per line */
</skip_libs>

<skip_including>
    /* The list of header files, that cannot be included
    directly (or non-self compiled ones), one per line */
</skip_including>

<search_headers>
    /* List of directories to be searched
    for header files to automatically
    generate include paths, one per line */
</search_headers>

<search_libs>
    /* List of directories to be searched
    for shared librariess to resolve
    dependencies, one per line */
</search_libs>

<tools>
    /* List of directories with tools used
    for analysis (GCC toolchain), one per line */
</tools>

<cross_prefix>
    /* GCC toolchain prefix.
    Examples:
        arm-linux-gnueabi
        arm-none-symbianelf */
</cross_prefix>

Extra Sections for API Sanity Checker

<test_include_preamble>
    /* The list of header files that should be
       included in each test case before other
       headers, one per line */
</test_include_preamble>

<test_defines>
    /* Add defines to test cases */
</test_defines>

<libs_depend>
    /* The list of paths to libraries that should be
       provided to gcc for resolving undefined symbols
       (if NEEDED elf section doesn't include them) */
</libs_depend>

<opaque_types>
    /* The list of opaque types, one per line */
</opaque_types>

<libgroup>
    <name>
        /* Name of the libgroup */
    </name>

    <symbols>
        /* The list of symbols (mangled names in C++)
           in the group that should be tested, one
           per line */
    </symbols>
</libgroup>

<out_params>
    /* Associating of out(returned)-parameters
       with symbols, one entry per line:
          symbol:param_name
                or
          symbol:param_number
       Examples:
          dbus_parse_address:entry
          dbus_parse_address:2       */
</out_params>

<skip_warnings>
    /* The list of warnings that should not be shown in
       the report, one pattern per line */
</skip_warnings>

Examples

libssh:
<version>
    0.3.4
</version>

<headers>
    /usr/local/libssh/0.3.4/include/
</headers>

<libs>
    /usr/local/libssh/0.3.4/lib/
</libs>

atk:

<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>

libxml2:

<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>

libX11:

<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>

BlackBerry 10 Native SDK:

<version>
    10
</version>

<headers>
    /home/RIM/bbndk/target_10_0_9_1673/qnx6/usr/include/bb/
</headers>

<search_headers>
    /home/RIM/bbndk/target_10_0_9_1673/qnx6/usr/include/
</search_headers>

<libs>
    /home/RIM/bbndk/target_10_0_9_1673/qnx6/x86/usr/lib/
</libs>

<tools>
    /home/RIM/bbndk/host_10_0_9_404/linux/x86/usr/bin/
</tools>

<cross_prefix>
    i486-pc-nto-qnx8.0.0
</cross_prefix>

libQt5Core:

<version>
    5.5.0
</version>

<headers>
    /usr/local/Qt-5.5.0/include/QtCore
</headers>

<libs>
    /usr/local/Qt-5.5.0/lib/libQt5Core.so.5.5.0
</libs>

<include_paths>
    /usr/local/Qt-5.5.0/include/
</include_paths>

<skip_headers>
    /private/
    qt_windows.h
    qatomic_*
    *_impl.h
</skip_headers>
 
<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
</gcc_options>

libxslt:

<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>

libxml++:

<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>

pango:

<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>

gtk+:

<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>

glib:

<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>

libsoup:

<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>

allegro:

<version>
    4.9.9.1
</version>

<headers>
    /usr/local/include/allegro5/allegro.h
</headers>

<libs>
    /usr/local/lib/liballegro-4.9.9.so
</libs>

mathgl:

<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>

gsl:

<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>

libjpeg:

<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>