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

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

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

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

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