import intf_libs  = libboost-algorithm%lib{boost_algorithm}
import intf_libs += libboost-any%lib{boost_any}
import intf_libs += libboost-array%lib{boost_array}
import intf_libs += libboost-assert%lib{boost_assert}
import intf_libs += libboost-bimap%lib{boost_bimap}
import intf_libs += libboost-bind%lib{boost_bind}
import intf_libs += libboost-concept-check%lib{boost_concept_check}
import intf_libs += libboost-config%lib{boost_config}
import intf_libs += libboost-container-hash%lib{boost_container_hash}
import intf_libs += libboost-conversion%lib{boost_conversion}
import intf_libs += libboost-core%lib{boost_core}
import intf_libs += libboost-detail%lib{boost_detail}
import intf_libs += libboost-foreach%lib{boost_foreach}
import intf_libs += libboost-function%lib{boost_function}
import intf_libs += libboost-integer%lib{boost_integer}
import intf_libs += libboost-iterator%lib{boost_iterator}
import intf_libs += libboost-lexical-cast%lib{boost_lexical_cast}
import intf_libs += libboost-math%lib{boost_math}
import intf_libs += libboost-move%lib{boost_move}
import intf_libs += libboost-mpl%lib{boost_mpl}
import intf_libs += libboost-multi-index%lib{boost_multi_index}
import intf_libs += libboost-numeric-conversion%lib{boost_numeric_conversion}
import intf_libs += libboost-optional%lib{boost_optional}
import intf_libs += libboost-parameter%lib{boost_parameter}
import intf_libs += libboost-preprocessor%lib{boost_preprocessor}
import intf_libs += libboost-property-map%lib{boost_property_map}
import intf_libs += libboost-property-tree%lib{boost_property_tree}
import intf_libs += libboost-random%lib{boost_random}
import intf_libs += libboost-range%lib{boost_range}
import intf_libs += libboost-serialization%lib{boost_serialization}
import intf_libs += libboost-smart-ptr%lib{boost_smart_ptr}
import intf_libs += libboost-throw-exception%lib{boost_throw_exception}
import intf_libs += libboost-tti%lib{boost_tti}
import intf_libs += libboost-tuple%lib{boost_tuple}
import intf_libs += libboost-type-traits%lib{boost_type_traits}
import intf_libs += libboost-typeof%lib{boost_typeof}
import intf_libs += libboost-unordered%lib{boost_unordered}
import intf_libs += libboost-utility%lib{boost_utility}
import intf_libs += libboost-xpressive%lib{boost_xpressive}

# BEGIN MANUAL CUSTOMIZATION
#
if $config.libboost_graph.graphviz
{
  import intf_libs += libboost-spirit%lib{boost_spirit}
  import impl_libs  = libboost-regex%lib{boost_regex}
}
#
# END MANUAL CUSTOMIZATION

intf_libs = $cxx.deduplicate_export_libs($intf_libs)

# Public headers.
#
pub = [dir_path] ../include/boost/

include $pub

pub_hdrs = $($pub/ pub_hdrs)

lib{boost_graph}: $pub/{$pub_hdrs}

# BEGIN MANUAL CUSTOMIZATION
#
# Private headers and sources as well as dependencies.
#
lib{boost_graph}: {hxx ixx txx cxx}{** -read_graphviz_new} \
  $impl_libs $intf_libs

lib{boost_graph}: cxx{read_graphviz_new}: \
  include = $config.libboost_graph.graphviz
#
# END MANUAL CUSTOMIZATION

# Build options.
#
out_pfx_inc = [dir_path] $out_root/include/
src_pfx_inc = [dir_path] $src_root/include/
out_pfx_src = [dir_path] $out_root/src/
src_pfx_src = [dir_path] $src_root/src/

cxx.poptions =+ "-I$out_pfx_src" "-I$src_pfx_src" \
                "-I$out_pfx_inc" "-I$src_pfx_inc"

{hbmia obja}{*}: cxx.poptions += -DBOOST_GRAPH_STATIC_LINK
{hbmis objs}{*}: cxx.poptions += -DBOOST_GRAPH_DYN_LINK

# Export options.
#
lib{boost_graph}:
{
  cxx.export.poptions = "-I$out_pfx_inc" "-I$src_pfx_inc" \
                         -DBOOST_GRAPH_NO_LIB
  cxx.export.libs = $intf_libs
}

liba{boost_graph}: cxx.export.poptions += -DBOOST_GRAPH_STATIC_LINK
libs{boost_graph}: cxx.export.poptions += -DBOOST_GRAPH_DYN_LINK

# For pre-releases use the complete version to make sure they cannot be used
# in place of another pre-release or the final version. See the version module
# for details on the version.* variable values.
#
if $version.pre_release
  lib{boost_graph}: bin.lib.version = "-$version.project_id"
else
  lib{boost_graph}: bin.lib.version = "-$version.major.$version.minor"

# Don't install private headers.
#
{hxx ixx txx}{*}: install = false
