# Module OASISFindlib

    module OASISFindlib: sig .. end

    type library_name = OASISTypes.name

    type findlib_part_name = OASISTypes.name

    type 'a map_of_findlib_part_name = 'a OASISUtils.MapString.t

    exception InternalLibraryNotFound of library_name

    exception FindlibPackageNotFound of OASISTypes.findlib_name

    type group_t =

`|` | `Container of `findlib_part_name * group_t list``
`|` | `Package of `(findlib_part_name * OASISTypes.common_section * OASISTypes.build_section * [ `Library of OASISTypes.library | `Object of OASISTypes.object_ ] * OASISTypes.unix_dirname option * group_t list)``

Library groups are organized in trees.

    val findlib_mapping : OASISTypes.package ->
           group_t list *
           (library_name -> OASISTypes.findlib_name) *
           (OASISTypes.findlib_name -> library_name)

Compute groups of libraries, associate root libraries with a tree of its children. A group of libraries is defined by the fact that these libraries have a parental relationship and must be installed together, with the same META file.

    val findlib_of_group : group_t -> OASISTypes.findlib_name

Return the findlib root name of a group, it takes into account containers. So the return group name is the toplevel name for both libraries and theirs containers.

    val root_of_group : group_t ->
           OASISTypes.common_section * OASISTypes.build_section *
           [ `Library of OASISTypes.library | `Object of OASISTypes.object_ ]

Return the root library, i.e. the first found into the group tree that has no parent.