XML Descriptor

# 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 Optional Sections Extra Sections (for API Sanity Checker) Examples

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