#
# Copyright (c) 2003-2025 Christopher M. Kohlhoff (chris at kohlhoff dot com)
#
# 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)
#

using quickbook ;

########################################################################
# Standalone HTML documentation

xml standalone_doc
  :
    asio.qbk
  ;

install images
  :
    overview/proactor.png
    overview/sync_op.png
    overview/async_op1.png
    overview/async_op2.png
    overview/model/async_agent_chain.png
    overview/model/async_agent_model.png
    overview/model/async_child_agent_chain.png
    overview/model/async_op_init_complete.png
    overview/model/async_op_model.png
    overview/model/async_op_phases.png
    overview/model/async_op_trivial_chain.png
    overview/model/completion_token_model.png
    overview/model/completion_token_transform.png
    overview/model/higher_level_model.png
  :
    <location>html/boost_asio
  ;

local example-names = cpp11/allocation cpp11/buffers cpp11/chat cpp11/deferred
  cpp11/echo cpp11/executors cpp11/fork cpp11/futures cpp11/handler_tracking
  cpp11/http/client cpp11/http/server cpp11/http/server2 cpp11/http/server3
  cpp11/http/server4 cpp11/icmp cpp11/invocation cpp11/iostreams cpp11/local
  cpp11/multicast cpp11/nonblocking cpp11/operations cpp11/parallel_group
  cpp11/porthopper cpp11/serialization cpp11/services cpp11/socks4 cpp11/spawn
  cpp11/ssl cpp11/timeouts cpp11/timers cpp11/type_erasure cpp11/windows
  cpp14/deferred cpp14/echo cpp14/executors cpp14/iostreams cpp14/operations
  cpp14/parallel_group cpp17/coroutines_ts cpp20/channels cpp20/coroutines
  cpp20/invocation cpp20/operations cpp20/type_erasure ;

for local l in $(example-names)
{
  install ex_$(l) : [ glob ../example/$(l)/*.*pp ] : <location>html/boost_asio/example/$(l) ;
}

boostbook standalone
  :
    standalone_doc
  :
    <xsl:param>boost.root=../../../..
    <xsl:param>chapter.autolabel=0
    <xsl:param>chunk.section.depth=8
    <xsl:param>chunk.first.sections=1
    <xsl:param>toc.section.depth=2
    <xsl:param>toc.max.depth=1
    <xsl:param>generate.section.toc.level=1
    <xsl:param>generate.toc="chapter nop section nop"
    <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/asio/doc/html
  ;

########################################################################
# HTML documentation for $(BOOST_ROOT)/doc/html

xml asio_doc
  :
    asio.qbk
  ;

explicit asio_doc ;

install asio_doc_images
  :
    overview/proactor.png
    overview/sync_op.png
    overview/async_op1.png
    overview/async_op2.png
    overview/model/async_agent_chain.png
    overview/model/async_agent_model.png
    overview/model/async_child_agent_chain.png
    overview/model/async_op_init_complete.png
    overview/model/async_op_model.png
    overview/model/async_op_phases.png
    overview/model/async_op_trivial_chain.png
    overview/model/completion_token_model.png
    overview/model/completion_token_transform.png
    overview/model/higher_level_model.png
  :
    <location>$(BOOST_ROOT)/doc/html/boost_asio
  ;

explicit asio_doc_images ;

for local l in $(example-names)
{
  install asio_ex_$(l) : [ glob ../example/$(l)/*.*pp ] : <location>$(BOOST_ROOT)/doc/html/boost_asio/example/$(l) ;
  explicit asio_ex_$(l) ;
}

alias asio_examples : asio_ex_$(example-names) ;

explicit asio_examples ;

path-constant images_location : ../../../doc/html ;

boostbook asio
  :
    asio_doc
  :
    <name>../../../doc/html
    <xsl:param>chapter.autolabel=0
    <xsl:param>chunk.section.depth=8
    <xsl:param>chunk.first.sections=1
    <xsl:param>toc.section.depth=2
    <xsl:param>toc.max.depth=1
    <xsl:param>generate.section.toc.level=1
    <xsl:param>generate.toc="chapter nop section nop"
    <xsl:param>root.filename=boost_asio
    <format>pdf:<xsl:param>img.src.path=$(images_location)/
    <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/asio/doc/html
  :
    <dependency>asio_doc_images
    <dependency>asio_examples
  ;

explicit asio ;

###############################################################################
alias boostdoc ;
explicit boostdoc ;
alias boostrelease : asio ;
explicit boostrelease ;
