intf_libs = # Interface dependencies.
impl_libs = # Implementation dependencies.
#import xxxx_libs += libhello%lib{hello}

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

include $pub

pub_hdrs = $($pub/ pub_hdrs)

lib{tinyfiledialogs}: libul{tinyfiledialogs}: $pub/{$pub_hdrs}

# Private headers and sources as well as dependencies.
#
libul{tinyfiledialogs}: {h c}{**} $impl_libs $intf_libs

libs{tinyfiledialogs}: def{tinyfiledialogs}: include = ($c.target.system == 'win32-msvc')
def{tinyfiledialogs}: libul{tinyfiledialogs}

# Upstream links Windows native dialogs against comdlg32, ole32, user32, and
# shell32. These are implementation-only, not part of the public API.
#
if ($c.target.class == 'windows')
{
  if ($c.target.system == 'mingw32')
    win_libs = -lcomdlg32 -lole32 -luser32 -lshell32
  else
    win_libs = comdlg32.lib ole32.lib user32.lib shell32.lib
}

# 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/

# The _unq paths let tinyfiledialogs.c keep writing #include "tinyfiledialogs.h".
# They must appear only in c.poptions, never in c.export.poptions, so consumers
# use the prefixed form <tinyfiledialogs/tinyfiledialogs.h>.
#
out_pfx_inc_unq = [dir_path] $out_root/include/tinyfiledialogs/
src_pfx_inc_unq = [dir_path] $src_root/include/tinyfiledialogs/

c.poptions =+ "-I$out_pfx_src" "-I$src_pfx_src" \
              "-I$out_pfx_inc" "-I$src_pfx_inc" \
              "-I$out_pfx_inc_unq" "-I$src_pfx_inc_unq"

if ($c.target.system == 'mingw32')
  c.loptions += -Wl,--export-all-symbols

if ($c.target.class == 'windows')
  c.libs += $win_libs

# Export options.
#
lib{tinyfiledialogs}:
{
  c.export.poptions = "-I$out_pfx_inc" "-I$src_pfx_inc"
  c.export.libs = $intf_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{tinyfiledialogs}: bin.lib.version = "-$version.project_id"
else
  lib{tinyfiledialogs}: bin.lib.version = "-$version.major.$version.minor"

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