intf_libs = # Interface dependencies.
impl_libs = # Implementation dependencies.
import impl_libs += libasio%lib{asio}

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

include $pub

pub_hdrs = $($pub/ pub_hdrs)

lib{fineftp-server}: $pub/{$pub_hdrs}

# Private headers and sources as well as dependencies.
#
lib{fineftp-server}: {hxx cxx}{** -unix/* -win32/*} $impl_libs $intf_libs
lib{fineftp-server}: {hxx cxx}{unix/*} : include=($cxx.target.class!='windows')
lib{fineftp-server}: {hxx cxx}{win32/*} : include=($cxx.target.class=='windows')

# Build options.
#

sys_libs = [strings]
switch $cxx.target.class, $cxx.target.system
{
  case 'windows', 'mingw32'
    sys_libs += -lws2_32 -lwsock32
  case 'windows'
    sys_libs += ws2_32.lib wsock32.lib
  case 'linux'
    sys_libs += -pthread
}

cxx.libs += $sys_libs
cxx.poptions =+ -D__USE_FILE_OFFSET64=1

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"  

switch $cxx.target.class
{
  case 'windows'
  {
    cxx.poptions =+  \
      -D_WIN32_WINNT=0x0601 \
      "-I$src_pfx_src/win32"
  }
  default
  {
    cxx.poptions =+  \
      "-I$src_pfx_src/unix"
  }
    
}

{hbmia obja}{*}: cxx.poptions += -DFINEFTP_STATIC_BUILD
{hbmis objs}{*}: cxx.poptions += -DFINEFTP_SHARED_BUILD

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

liba{fineftp-server}: cxx.export.poptions += -DFINEFTP_STATIC
libs{fineftp-server}: cxx.export.poptions += -DFINEFTP_SHARED

# 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{fineftp-server}: bin.lib.version = "-$version.project_id"
else
  lib{fineftp-server}: bin.lib.version = "-$version.major.$version.minor"

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