# Boost.Bimap
#
# Copyright (c) 2006-2007 Matias Capeletto
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)


# Quickbook
# -----------------------------------------------------------------------------

import quickbook ;

xml bimap
    :
        bimap.qbk
    ;

path-constant images_location : html ;

boostbook standalone
    :
        bimap
    :
        <xsl:param>boost.root=../../../..
        <xsl:param>html.stylesheet=boostbook.css
        <xsl:param>toc.max.depth=2
        <xsl:param>toc.section.depth=4
        <xsl:param>chunk.section.depth=2
        <format>pdf:<xsl:param>img.src.path=$(images_location)/
        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/bimap/doc/html
    ;


# Doxygen
# -----------------------------------------------------------------------------
# This generate the doxydocs and write "bimap.hdt".
# Delete this file if you want to regenerate the doxydocs again
# import directdoxygen ;
# html-doxydocs bimap.hdt : bimap.hdf ;

