import intf_libs  = libboost-array%lib{boost_array}
import intf_libs += libboost-assert%lib{boost_assert}
import intf_libs += libboost-config%lib{boost_config}
import intf_libs += libboost-core%lib{boost_core}
import intf_libs += libboost-endian%lib{boost_endian}
import intf_libs += libboost-function%lib{boost_function}
import intf_libs += libboost-function-types%lib{boost_function_types}
import intf_libs += libboost-fusion%lib{boost_fusion}
import intf_libs += libboost-integer%lib{boost_integer}
import intf_libs += libboost-io%lib{boost_io}
import intf_libs += libboost-iterator%lib{boost_iterator}
import intf_libs += libboost-move%lib{boost_move}
import intf_libs += libboost-mpl%lib{boost_mpl}
import intf_libs += libboost-optional%lib{boost_optional}
import intf_libs += libboost-phoenix%lib{boost_phoenix}
import intf_libs += libboost-pool%lib{boost_pool}
import intf_libs += libboost-preprocessor%lib{boost_preprocessor}
import intf_libs += libboost-proto%lib{boost_proto}
import intf_libs += libboost-range%lib{boost_range}
import intf_libs += libboost-smart-ptr%lib{boost_smart_ptr}
import intf_libs += libboost-thread%lib{boost_thread}
import intf_libs += libboost-throw-exception%lib{boost_throw_exception}
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-variant%lib{boost_variant}

# BEGIN MANUAL CUSTOMIZATION
#
if $config.libboost_spirit.classic_regex
  import intf_libs = libboost-regex%lib{boost_regex}
#
# END MANUAL CUSTOMIZATION

intf_libs = $cxx.deduplicate_export_libs($intf_libs)


# BEGIN MANUAL CUSTOMIZATION
#

# Spirit Classic headers.
#
lib{boost_spirit}: spirit/home/hxx{classic}                             \
                   spirit/home/classic/{hxx ixx}{** -utility/regex}     \
                   spirit/include/hxx{classic* -classic_regex}:         \
  include = $config.libboost_spirit.classic

# Spirit Classic: regex-specific headers.
#
lib{boost_spirit}: spirit/home/classic/utility/hxx{regex}       \
                   spirit/include/hxx{classic_regex} :          \
  include = $config.libboost_spirit.classic_regex

# Support headers.
#
lib{boost_spirit}: spirit/home/hxx{support}                     \
                   spirit/home/support/hxx{**}                  \
                   spirit/include/hxx{support support_*} :      \
  include = ($config.libboost_spirit.x2 || $config.libboost_spirit.x3)

# Spirit V2 headers.
#
lib{boost_spirit}: spirit/hxx{version include/version}                  \
                   spirit/home/hxx{karma lex qi}                        \
                   spirit/home/hxx{karma/** lex/** qi/**}               \
                   spirit/include/hxx{karma* lex* phoenix* qi*}:        \
  include = $config.libboost_spirit.x2

# Spirit X3 headers.
#
lib{boost_spirit}: spirit/home/hxx{x3 x3/**}: \
  include = $config.libboost_spirit.x3

lib{boost_spirit}: $intf_libs

#
# END MANUAL CUSTOMIZATION

# Export options.
#
out_pfx = [dir_path] $out_root/include/
src_pfx = [dir_path] $src_root/include/

lib{boost_spirit}:
{
  cxx.export.poptions = "-I$out_pfx" "-I$src_pfx"
  cxx.export.libs = $intf_libs
}

# Install into the boost/ subdirectory of, say, /usr/include/
# recreating subdirectories.
#
{hxx ixx txx}{*}:
{
  install         = include/boost/
  install.subdirs = true
}
