# -*- mode: python; -*-

Import("env")

env = env.Clone()

# GCC emits a warning on both v2 and v3 toolchains when compiling filesystem. 
# We should check if this is still needed when doing boost upgrades in the future.
if env.ToolchainIs('GCC'):
    env.AppendUnique(CXXFLAGS=['-Wno-overloaded-virtual'])

env.Library(
    target='boost_system', 
    source=[
        'libs/system/src/error_code.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/boost_assert_shim',
    ],
)

env.Library(
    target='boost_filesystem', 
    source=[
        'libs/filesystem/src/codecvt_error_category.cpp',
        'libs/filesystem/src/operations.cpp',
        'libs/filesystem/src/path.cpp',
        'libs/filesystem/src/path_traits.cpp',
        'libs/filesystem/src/portability.cpp',
        'libs/filesystem/src/unique_path.cpp',
        'libs/filesystem/src/utf8_codecvt_facet.cpp',
        'libs/filesystem/src/windows_file_codecvt.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/boost_assert_shim',
        'boost_system',
    ],
)

env.Library(
    target='boost_program_options', 
    source=[
        'libs/program_options/src/cmdline.cpp',
        'libs/program_options/src/config_file.cpp',
        'libs/program_options/src/convert.cpp',
        'libs/program_options/src/options_description.cpp',
        'libs/program_options/src/parsers.cpp',
        'libs/program_options/src/positional_options.cpp',
        'libs/program_options/src/split.cpp',
        'libs/program_options/src/utf8_codecvt_facet.cpp',
        'libs/program_options/src/value_semantic.cpp',
        'libs/program_options/src/variables_map.cpp',
        'libs/program_options/src/winmain.cpp',
    ],
    # Because `::environ` is resolved in `/usr/lib/crt1.o` on FreeBSD, this library needs to be
    # marked `incomplete` on FreeBSD.
    LIBDEPS_TAGS=[] if not env.TargetOSIs('freebsd') else [
        'illegal_cyclic_or_unresolved_dependencies_whitelisted',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/boost_assert_shim',
    ],
)

env.Library(
    target='boost_iostreams', 
    source=[
        'libs/iostreams/src/file_descriptor.cpp',
        'libs/iostreams/src/mapped_file.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/boost_assert_shim',
        'boost_system',
    ],
)
