This package contains precompiled binaries of CodeSynthesis XSD, a
W3C XML Schema to C++ Data Binding compiler. For more information
about XSD visit

http://www.codesynthesis.com/products/xsd/

This README file describes how to start using XSD in UNIX or
UNIX-like (for example, Cygwin/Mingw) environments.


Prerequisites
-------------

The XSD runtime library and the generated code depend on the underlying
XML parser which can be Xerces-C++ for the C++/Tree mapping and Xerces-C++
or Expat for the C++/Parser mapping.

Xerces-C++ can be obtained from http://xerces.apache.org/xerces-c/. Most
GNU/Linux distributions provide precompiled binary packages for Xerces-C++.
You can also download precompiled Xerces-C++ libraries for a wide range of
platforms and compilers from http://xerces.apache.org/xerces-c/download.cgi

Expat can be obtained from http://www.libexpat.org/. Most GNU/Linux
distributions provide precompiled binary packages for Expat.


Building Examples
-----------------

To build examples you will need GNU make. All examples in the examples/
directory come with simple makefiles. For instance, to build a hello
example in examples/cxx/tree you could execute the following commands:

$ cd examples/cxx/tree/hello
$ make

The following make variables affect the compilation process and can
be overridden from the command line:

CXX         - C++ compiler, by default 'g++'
CXXFLAGS    - C++ options
CPPFLAGS    - C/C++ Preprocessor options

LIBS        - Libraries to link with, by default '-lxerces-c' for the
              C++/Tree examples and either '-lxerces-c' or '-lexpat' for
              the C++/Parser examples, depending on XML_PARSER
LDFLAGS     - Linker options

XSD         - XSD compiler, by default path to the XSD binary
XSDFLAGS    - XSD options

WITH_ZLIB   - Set this variable to 1 if you would like to build examples
              that depend on the zlib library

WITH_ACE    - Set this variable to 1 if you would like to build examples
              that depend on the ACE library

WITH_XDR    - Set this variable to 1 if you would like to build examples
              that depend on the XDR API (available out of the box on
	      most GNU/Linux and UNIX systems)

WITH_BOOST  - Set this variable to 1 if you would like to build examples
              that depend on the Boost date_time and serialization
	      libraries

WITH_XQILLA - Set this variable to 1 if you would like to build examples
              that depend on the XQilla library (XPath 2)

Additionally, makefiles for the C++/Parser examples (examples/cxx/parser/)
allow you to choose the underlying XML parser:

XML_PARSER  - Underlying XML parser, can be 'xerces' (default) or 'expat'


For instance, if you would like to build an example using g++-4.0 instead
of the default g++ and would like to use Xerces-C++ from ~/xerces-c instead
of the default, system-wide installation, you could execute the following
command:

$ make CXX=g++-4.0 \
       CPPFLAGS="-I ~/xerces-c/include" \
       LDFLAGS="-L ~/xerces-c/lib"
