: 1
name: xsde
version: 3.4.0
language: c++
summary: XML Schema to C++ data binding compiler for mobile and embedded systems
license: other: GPL-2.0-only with FLOSS exception
topics: C++, XML, XML Schema, XML parser, source code generation
description-file: README.md
package-description-file: PACKAGE-README.md
changes-file: NEWS
url: https://www.codesynthesis.com/products/xsde/
doc-url: https://www.codesynthesis.com/products/xsde/
src-url: https://git.codesynthesis.com/cgit/xsde/xsde/
email: xsde-users@codesynthesis.com ; Mailing list
build-warning-email: builds@codesynthesis.com
requires: host
requires: c++11
depends: * build2 >= 0.17.0
depends: * bpkg >= 0.17.0
depends: libxsd-frontend ^2.1.0
depends: libcutl ^1.11.0
depends: * cli ^1.2.0- ? ($config.xsde.develop)
tests: * xsde-tests == $
examples: * xsde-examples == $

# Disable builds for Windows, except for GCC and static linkage, since export
# of data is currently not supported for such configurations.
#
iso8859-1-builds: -( +windows -gcc -static )
iso8859-1-build-config:
\
{ config.xsde_tests.encoding=iso8859-1    }+ xsde-tests
{ config.xsde_examples.encoding=iso8859-1 }+ xsde-examples
\

no-stl-build-config:
\
{ config.xsde_tests.stl=false    }+ xsde-tests
{ config.xsde_examples.stl=false }+ xsde-examples
\

# Omit (here and below) some far-fetched configurations.
#
#no-stl-iter-build-config: { config.xsde_tests.stl_iterator=false }+ xsde-tests

no-iostream-build-config:
\
{ config.xsde_tests.iostream=false    }+ xsde-tests
{ config.xsde_examples.iostream=false }+ xsde-examples
\

no-exceptions-build-config:
\
{ config.xsde_tests.exceptions=false    }+ xsde-tests
{ config.xsde_examples.exceptions=false }+ xsde-examples
\

no-long-long-build-config:
\
{ config.xsde_tests.long_long=false    }+ xsde-tests
{ config.xsde_examples.long_long=false }+ xsde-examples
\

reuse-mixin-build-config:
\
{ config.xsde_tests.reuse_style=mixin    }+ xsde-tests
{ config.xsde_examples.reuse_style=mixin }+ xsde-examples
\

#reuse-none-build-config: { config.xsde_tests.reuse_style=none }+ xsde-tests
#cdr-build-config:        { config.xsde_tests.cdr=true         }+ xsde-tests
#xdr-build-config:        { config.xsde_tests.xdr=true         }+ xsde-tests

polymorphic-builds: -( +windows -gcc -static )
polymorphic-build-config:
\
{ config.xsde_tests.polymorphic=true    }+ xsde-tests
{ config.xsde_examples.polymorphic=true }+ xsde-examples
\

no-parser_validation-build-config:
\
{ config.xsde_tests.parser_validation=false    }+ xsde-tests
{ config.xsde_examples.parser_validation=false }+ xsde-examples
\

no-serializer_validation-build-config:
\
{ config.xsde_tests.serializer_validation=false    }+ xsde-tests
{ config.xsde_examples.serializer_validation=false }+ xsde-examples
\

# Test with external Expat and the default custom allocator.
#
external-expat-build-config:
\
{
  config.xsde_tests.external_expat=true
  config.xsde_tests.custom_allocator=true
  config.xsde_tests.default_allocator=true
}+ xsde-tests

{
  config.xsde_examples.external_expat=true
  config.xsde_examples.custom_allocator=true
  config.xsde_examples.default_allocator=true
}+ xsde-examples
\

# Enable xsde-examples/cxx/{hybrid,parser,serializer}/minimal examples.
#
minimal-build-config:
\
{
  config.xsde_tests.stl=false
  config.xsde_tests.iostream=false
  config.xsde_tests.exceptions=false
}+ xsde-tests

{
  config.xsde_examples.stl=false
  config.xsde_examples.iostream=false
  config.xsde_examples.exceptions=false
}+ xsde-examples
\

# Enable xsde-examples/cxx/hybrid/allocator example.
#
# Only enable for static builds since the allocator functions are
# provided by the executable and used by the libxsde library.
#
custom-allocator-builds: static
custom-allocator-build-config:
\
{
  config.xsde_tests.custom_allocator=true
  config.xsde_tests.stl=false
  config.xsde_tests.iostream=false
  config.xsde_tests.exceptions=false
}+ xsde-tests

{
  config.xsde_examples.custom_allocator=true
  config.xsde_examples.stl=false
  config.xsde_examples.iostream=false
  config.xsde_examples.exceptions=false
}+ xsde-examples
\

# Binary distribution packages. Overall notes:
#
# - Link dependencies that don't come from system packages statically.
#
# - We suppress generating binary packages for dependecies (libcutl,
#   libxsd-frontend) with --recursive=auto since they are linked statically.
#
# - For archives we strip the default compiler name from metadata since
#   it's unimportant (we link the C++ runtime statically).
#
# - We disable warning emails for configurations that build Xerces-C++.

# Note that the Xerces-C++ package is in the unsupported `universe` section on
# Ubuntu so we have a separate configuration for it where we build Xerces-C++
# ourselves.
#
bindist-debian-builds: bindist
bindist-debian-build-include: linux_debian*-**
bindist-debian-build-exclude: **
bindist-debian-build-config:
\
+bpkg.bindist.debian:
+bbot.bindist.upload:
bpkg.bindist.debian:--recursive=auto
bpkg.create:config.bin.lib=static
bpkg.create:config.bin.liba.lib="shared static"
?sys:libxerces-c
\

bindist-ubuntu-builds: bindist
bindist-ubuntu-build-include: linux_ubuntu*-**
bindist-ubuntu-build-exclude: **
bindist-ubuntu-build-config:
\
+bpkg.bindist.debian:
+bbot.bindist.upload:
bpkg.bindist.debian:--recursive=auto
bpkg.create:config.bin.lib=static
bpkg.create:config.bin.liba.lib="shared static"
?sys:libicuuc
?sys:libicui18n
\
#bindist-ubuntu-build-error-email: builds@codesynthesis.com

# Note that there is no Xerces-C++ package in RHEL (only in EPEL) so we
# have a separate configuration for RHEL.
#
bindist-fedora-builds: bindist
bindist-fedora-build-include: linux_fedora*-**
bindist-fedora-build-exclude: **
bindist-fedora-build-config:
\
+bpkg.bindist.fedora:
+bbot.bindist.upload:
bpkg.bindist.fedora:--recursive=auto
bpkg.create:config.bin.lib=static
bpkg.create:config.bin.liba.lib="shared static"
?sys:libxerces-c
\

bindist-rhel-builds: bindist
bindist-rhel-build-include: linux_rhel*-**
bindist-rhel-build-exclude: **
bindist-rhel-build-config:
\
+bpkg.bindist.fedora:
+bbot.bindist.upload:
bpkg.bindist.fedora:--recursive=auto
bpkg.create:config.bin.lib=static
bpkg.create:config.bin.liba.lib="shared static"
?sys:libicuuc
?sys:libicui18n
\
#bindist-rhel-build-error-email: builds@codesynthesis.com

# Note: use static runtime since the DLL runtime is not universally
# pre-installed.
#
bindist-windows-builds: bindist
bindist-windows-build-include: windows*-msvc**
bindist-windows-build-exclude: **
bindist-windows-build-config:
\
+bpkg.bindist.archive:
+bbot.bindist.upload:
bpkg.bindist.archive:--recursive=auto
bpkg.bindist.archive:--archive-lang-impl=cc=

# Relocatable by default (see target configuration for details).
#
#bpkg.bindist.archive:config.install.relocatable=true

bpkg.create:config.bin.lib=static
bpkg.create:config.bin.liba.lib="shared static"
bpkg.create:config.cc.coptions+="/MT"
b.create:config.cc.coptions="/W2 /O2"
\
#bindist-windows-build-error-email: builds@codesynthesis.com

# Generic linux package (built using oldest Debian we support).
#
# Note: update glibc version if changing build configuration.
#
bindist-linux-glibc2.31-builds: bindist
bindist-linux-glibc2.31-build-include: linux_debian_11-gcc_10.2-bindist
bindist-linux-glibc2.31-build-exclude: **
bindist-linux-glibc2.31-build-config:
\
+bpkg.bindist.archive:
+bbot.bindist.upload:
bpkg.bindist.archive:--recursive=auto
bpkg.bindist.archive:--archive-no-os
bpkg.bindist.archive:--archive-lang-impl=cc=
bpkg.bindist.archive:--archive-build-meta=+linux-glibc2.31
bpkg.bindist.archive:config.install.relocatable=true
bpkg.create:config.bin.lib=static
bpkg.create:config.bin.liba.lib="shared static"
config.cc.loptions+="-static-libstdc++ -static-libgcc"
\
#bindist-linux-glibc2.31-build-error-email: builds@codesynthesis.com
