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

include $pub

pub_hdrs = $($pub/ pub_hdrs)

lib{ftxui-screen}: $pub/{$pub_hdrs}
lib{ftxui-screen}: ftxui/screen/{hxx cxx}{* -*_test -*_fuzzer}

dom_libs = lib{ftxui-screen}
lib{ftxui-dom}: $pub/{$pub_hdrs}
lib{ftxui-dom}: ftxui/dom/{hxx cxx}{* -*_test -*_fuzzer}
lib{ftxui-dom}: $dom_libs

component_libs = lib{ftxui-dom} lib{ftxui-screen}
lib{ftxui-component}: $pub/{$pub_hdrs}
lib{ftxui-component}: ftxui/component/{hxx cxx}{* -*_test -*_fuzzer}
lib{ftxui-component}: $component_libs

./: lib{ftxui-screen} lib{ftxui-dom} lib{ftxui-component}

platform_poptions = # Platform specific poptions.
platform_libs = # Platform specific libraries.
switch $cxx.target.class
{
    case 'windows'
    {
        if ($cxx.target.system != 'mingw32')
        {
            platform_poptions += -D_CRT_SECURE_NO_WARNINGS
        }

        if ($config.libftxui.use_ms_terminal_fallback)
        {
            platform_poptions += -DFTXUI_MICROSOFT_TERMINAL_FALLBACK
        }

        platform_poptions += -DUNICODE -D_UNICODE
    }
    default
    {
		platform_libs += -pthread
    }
}

# 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" \
                $platform_poptions
cxx.libs += $platform_libs

# Export options.
lib{ftxui-screen}:
{
  cxx.export.poptions = "-I$out_pfx_inc" "-I$src_pfx_inc"
}

lib{ftxui-dom}:
{
  cxx.export.poptions = "-I$out_pfx_inc" "-I$src_pfx_inc"
  cxx.export.libs = $dom_libs $platform_libs
}

lib{ftxui-component}:
{
  cxx.export.poptions = "-I$out_pfx_inc" "-I$src_pfx_inc"
  cxx.export.libs = $component_libs $platform_libs
}

# 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{ftxui-screen ftxui-dom ftxui-component}: bin.lib.version = "-$version.project_id"
}
else
{
  lib{ftxui-screen ftxui-dom ftxui-component}: bin.lib.version = "-$version.major.$version.minor"
}

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