# file      : cxx/hybrid/binary/custom/buildfile
# license   : GNU GPL v2 + exceptions; see accompanying LICENSE file

if ($build.meta_operation != 'dist')
{
  assert ($stl) \
    "config.xsde_tests.stl should be set to true for this test"

  assert ($iostream) \
    "config.xsde_tests.iostream should be set to true for this test"

  assert ($exceptions) \
    "config.xsde_tests.exceptions should be set to true for this test"

  assert ($parser_validation) \
    "config.xsde_tests.parser_validation should be set to true for this test"

  assert ($reuse_style != 'none') \
    "config.xsde_tests.reuse_style should not be set to 'none' for this test"

  assert (!$custom_allocator || $default_allocator) \
    "config.xsde_tests.default_allocator should be set to true for this test"
}

import libs = libxsde%lib{xsde}

exe{driver}: {hxx ixx txx cxx}{* -test       -test-pskel       -test-sskel        \
                                             -test-pimpl       -test-simpl        \
                                 -xml-schema -xml-schema-pskel -xml-schema-sskel} \
             {hxx ixx     cxx}{   test        test-pskel        test-sskel}       \
             {hxx         cxx}{               test-pimpl        test-simpl}       \
             {hxx            }{   xml-schema  xml-schema-pskel  xml-schema-sskel} \
             $libs

exe{driver}: xml{test-000}: test.input  = true
exe{driver}: std{test-000}: test.stdout = true

# Note that the xml-schema.xsd file need not exist and is only used to derive
# the names of the included header files.
#
<{hxx ixx cxx}{test test-pskel test-sskel}                   \
 {hxx     cxx}{     test-pimpl test-simpl}>: xsd{test} $xsde
{{
  $xsde cxx-hybrid $cxx_hybrid_options             \
        --generate-parser                          \
        --generate-serializer                      \
        --generate-aggregate                       \
        --extern-xml-schema xml-schema.xsd         \
        --generate-insertion orawstream            \
        --hxx-prologue '#include "orawstream.hxx"' \
        --generate-extraction irawstream           \
        --hxx-prologue '#include "irawstream.hxx"' \
        --output-dir $out_base                     \
        $path($<[0])
}}

# Note that the xml-schema.xsd file need not exist nor it is being
# generated. It is only used to derive the names of the resulting header
# files.
#
<{hxx}{xml-schema xml-schema-pskel xml-schema-sskel}>: $xsde
{{
  $xsde cxx-hybrid $cxx_hybrid_options \
        --generate-xml-schema          \
        --generate-parser              \
        --generate-serializer          \
        --output-dir $out_base         \
        xml-schema.xsd
}}

cxx.poptions =+ "-I$out_base" "-I$src_base"

if ($reuse_style == 'mixin' && $cxx.class == 'gcc')
  cxx.coptions += -Wno-overloaded-virtual
