summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-cpp/xsd')
-rw-r--r--dev-cpp/xsd/Manifest1
-rw-r--r--dev-cpp/xsd/files/3.3.0-boost-filesystem-v2-deprecation.patch925
-rw-r--r--dev-cpp/xsd/files/3.3.0-disable_examples_and_tests.patch55
-rw-r--r--dev-cpp/xsd/files/3.3.0-fix_include.patch13
-rw-r--r--dev-cpp/xsd/files/3.3.0-fix_tests.patch13
-rw-r--r--dev-cpp/xsd/files/3.3.0-xsdcxx-rename.patch121
-rw-r--r--dev-cpp/xsd/metadata.xml11
-rw-r--r--dev-cpp/xsd/xsd-3.3.0-r3.ebuild142
8 files changed, 1281 insertions, 0 deletions
diff --git a/dev-cpp/xsd/Manifest b/dev-cpp/xsd/Manifest
new file mode 100644
index 00000000000..42c2bd834e2
--- /dev/null
+++ b/dev-cpp/xsd/Manifest
@@ -0,0 +1 @@
+DIST xsd-3.3.0.tar.bz2 999479 SHA256 6157e3b0f3108f69a8d9344956020c234841d4a1de28745b19e45f8ee34b0c66 SHA512 4e7d18d71b362c4b67ad70c59c68d9be4a5f7210c94306c1685c2991a5eb82496675ac0c53f2919237e658d2e1fcf7e1bf5abe295127c7cf175c8eed090a8570 WHIRLPOOL 70b4767c463d4c5be65f8757e519a98a3c9dbc00f9a8a86026bdba5115eae5c5c7008ea05709ba293a68ab8de718b070cc0b4f6390f5bac62dca5f8a63480341
diff --git a/dev-cpp/xsd/files/3.3.0-boost-filesystem-v2-deprecation.patch b/dev-cpp/xsd/files/3.3.0-boost-filesystem-v2-deprecation.patch
new file mode 100644
index 00000000000..0babafa0e68
--- /dev/null
+++ b/dev-cpp/xsd/files/3.3.0-boost-filesystem-v2-deprecation.patch
@@ -0,0 +1,925 @@
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/parser/expat/elements.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/expat/elements.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/parser/expat/elements.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/expat/elements.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -594,7 +594,7 @@
+ {
+ try
+ {
+- start_element (ns, name, 0);
++ this->start_element (ns, name, 0);
+ }
+ catch (const schema_exception<C>& e)
+ {
+@@ -621,7 +621,7 @@
+ {
+ try
+ {
+- start_element (ns, name, 0);
++ this->start_element (ns, name, 0);
+ }
+ catch (const schema_exception<C>& e)
+ {
+@@ -693,7 +693,7 @@
+ }
+
+ ro_string<C> ro_id (id);
+- start_element (ns, name, &ro_id);
++ this->start_element (ns, name, &ro_id);
+ }
+ catch (const schema_exception<C>& e)
+ {
+@@ -713,7 +713,7 @@
+
+ try
+ {
+- attribute (ns, name, value);
++ this->attribute (ns, name, value);
+ }
+ catch (const schema_exception<C>& e)
+ {
+@@ -748,7 +748,7 @@
+
+ try
+ {
+- end_element (ns, name);
++ this->end_element (ns, name);
+ }
+ catch (const schema_exception<C>& e)
+ {
+@@ -777,7 +777,7 @@
+
+ try
+ {
+- characters (str);
++ this->characters (str);
+ }
+ catch (const schema_exception<C>& e)
+ {
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/parser/non-validating/parser.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/non-validating/parser.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/parser/non-validating/parser.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/non-validating/parser.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -164,15 +164,15 @@
+ if (ns == xml::bits::xmlns_namespace<C> ())
+ return;
+
+- if (!_attribute_impl (ns, name, value))
+- _any_attribute (ns, name, value);
++ if (!this->_attribute_impl (ns, name, value))
++ this->_any_attribute (ns, name, value);
+ }
+
+ template <typename C>
+ void simple_content<C>::
+ _characters (const ro_string<C>& str)
+ {
+- _characters_impl (str);
++ this->_characters_impl (str);
+ }
+
+
+@@ -190,15 +190,15 @@
+ if (s.depth_++ > 0)
+ {
+ if (s.any_)
+- _start_any_element (ns, name, type);
++ this->_start_any_element (ns, name, type);
+ else if (s.parser_)
+ s.parser_->_start_element (ns, name, type);
+ }
+ else
+ {
+- if (!_start_element_impl (ns, name, type))
++ if (!this->_start_element_impl (ns, name, type))
+ {
+- _start_any_element (ns, name, type);
++ this->_start_any_element (ns, name, type);
+ s.any_ = true;
+ }
+ else if (s.parser_ != 0)
+@@ -235,7 +235,7 @@
+
+ this->_post_impl ();
+
+- if (!_end_element_impl (ns, name))
++ if (!this->_end_element_impl (ns, name))
+ assert (false);
+ }
+ }
+@@ -246,7 +246,7 @@
+ if (--s.depth_ > 0)
+ {
+ if (s.any_)
+- _end_any_element (ns, name);
++ this->_end_any_element (ns, name);
+ else if (s.parser_)
+ s.parser_->_end_element (ns, name);
+ }
+@@ -255,10 +255,10 @@
+ if (s.parser_ != 0 && !s.any_)
+ s.parser_->_post_impl ();
+
+- if (!_end_element_impl (ns, name))
++ if (!this->_end_element_impl (ns, name))
+ {
+ s.any_ = false;
+- _end_any_element (ns, name);
++ this->_end_any_element (ns, name);
+ }
+ }
+ }
+@@ -292,14 +292,14 @@
+ if (s.depth_ > 0)
+ {
+ if (s.any_)
+- _any_attribute (ns, name, value);
++ this->_any_attribute (ns, name, value);
+ else if (s.parser_)
+ s.parser_->_attribute (ns, name, value);
+ }
+ else
+ {
+- if (!_attribute_impl (ns, name, value))
+- _any_attribute (ns, name, value);
++ if (!this->_attribute_impl (ns, name, value))
++ this->_any_attribute (ns, name, value);
+ }
+ }
+
+@@ -312,14 +312,14 @@
+ if (s.depth_ > 0)
+ {
+ if (s.any_)
+- _any_characters (str);
++ this->_any_characters (str);
+ else if (s.parser_)
+ s.parser_->_characters (str);
+ }
+ else
+ {
+- if (!_characters_impl (str))
+- _any_characters (str);
++ if (!this->_characters_impl (str))
++ this->_any_characters (str);
+ }
+ }
+
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -20,7 +20,7 @@
+ const ro_string<C>& name,
+ const ro_string<C>* type)
+ {
+- _start_any_element (ns, name, type);
++ this->_start_any_element (ns, name, type);
+ this->complex_content<C>::context_.top ().any_ = true;
+ return true;
+ }
+@@ -30,7 +30,7 @@
+ _end_element_impl (const ro_string<C>& ns, const ro_string<C>& name)
+ {
+ this->complex_content<C>::context_.top ().any_ = false;
+- _end_any_element (ns, name);
++ this->_end_any_element (ns, name);
+ return true;
+ }
+
+@@ -41,7 +41,7 @@
+ const ro_string<C>& name,
+ const ro_string<C>& value)
+ {
+- _any_attribute (ns, name, value);
++ this->_any_attribute (ns, name, value);
+ return true;
+ }
+
+@@ -49,7 +49,7 @@
+ bool any_type_pskel<C>::
+ _characters_impl (const ro_string<C>& s)
+ {
+- _any_characters (s);
++ this->_any_characters (s);
+ return true;
+ }
+
+@@ -60,7 +60,7 @@
+ bool any_simple_type_pskel<C>::
+ _characters_impl (const ro_string<C>& s)
+ {
+- _any_characters (s);
++ this->_any_characters (s);
+ return true;
+ }
+ }
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/parser/validating/parser.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/validating/parser.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/parser/validating/parser.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/validating/parser.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -93,8 +93,8 @@
+ const ro_string<C>& name,
+ const ro_string<C>* type)
+ {
+- if (!_start_element_impl (ns, name, type))
+- _unexpected_element (ns, name);
++ if (!this->_start_element_impl (ns, name, type))
++ this->_unexpected_element (ns, name);
+ }
+
+ template <typename C>
+@@ -102,8 +102,8 @@
+ _end_element (const ro_string<C>& ns,
+ const ro_string<C>& name)
+ {
+- if (!_end_element_impl (ns, name))
+- _unexpected_element (ns, name);
++ if (!this->_end_element_impl (ns, name))
++ this->_unexpected_element (ns, name);
+ }
+
+ template <typename C>
+@@ -129,16 +129,16 @@
+ if (ns == xml::bits::xmlns_namespace<C> ())
+ return;
+
+- if (!_attribute_impl (ns, name, value))
+- _unexpected_attribute (ns, name, value);
++ if (!this->_attribute_impl (ns, name, value))
++ this->_unexpected_attribute (ns, name, value);
+ }
+
+ template <typename C>
+ void empty_content<C>::
+ _characters (const ro_string<C>& s)
+ {
+- if (!_characters_impl (s))
+- _unexpected_characters (s);
++ if (!this->_characters_impl (s))
++ this->_unexpected_characters (s);
+ }
+
+ //
+@@ -218,15 +218,15 @@
+ if (ns == xml::bits::xmlns_namespace<C> ())
+ return;
+
+- if (!_attribute_impl (ns, name, value))
+- _unexpected_attribute (ns, name, value);
++ if (!this->_attribute_impl (ns, name, value))
++ this->_unexpected_attribute (ns, name, value);
+ }
+
+ template <typename C>
+ void simple_content<C>::
+ _characters (const ro_string<C>& str)
+ {
+- if (!_characters_impl (str))
++ if (!this->_characters_impl (str))
+ {
+ // Mixed content is implemented in the generated code
+ // by overriding _characters_impl and forwarding to
+@@ -245,7 +245,7 @@
+ c != C (0x0D) && // carriage return
+ c != C (0x09) && // tab
+ c != C (0x0A))
+- _unexpected_characters (str);
++ this->_unexpected_characters (str);
+ }
+ }
+ }
+@@ -322,14 +322,14 @@
+ if (s.depth_++ > 0)
+ {
+ if (s.any_)
+- _start_any_element (ns, name, type);
++ this->_start_any_element (ns, name, type);
+ else if (s.parser_)
+ s.parser_->_start_element (ns, name, type);
+ }
+ else
+ {
+- if (!_start_element_impl (ns, name, type))
+- _unexpected_element (ns, name);
++ if (!this->_start_element_impl (ns, name, type))
++ this->_unexpected_element (ns, name);
+ else if (s.parser_ != 0)
+ s.parser_->_pre_impl ();
+ }
+@@ -364,7 +364,7 @@
+
+ this->_post_impl ();
+
+- if (!_end_element_impl (ns, name))
++ if (!this->_end_element_impl (ns, name))
+ assert (false);
+ }
+ }
+@@ -375,7 +375,7 @@
+ if (--s.depth_ > 0)
+ {
+ if (s.any_)
+- _end_any_element (ns, name);
++ this->_end_any_element (ns, name);
+ else if (s.parser_)
+ s.parser_->_end_element (ns, name);
+ }
+@@ -384,8 +384,8 @@
+ if (s.parser_ != 0 && !s.any_)
+ s.parser_->_post_impl ();
+
+- if (!_end_element_impl (ns, name))
+- _unexpected_element (ns, name);
++ if (!this->_end_element_impl (ns, name))
++ this->_unexpected_element (ns, name);
+ }
+ }
+ }
+@@ -418,14 +418,14 @@
+ if (s.depth_ > 0)
+ {
+ if (s.any_)
+- _any_attribute (ns, name, value);
++ this->_any_attribute (ns, name, value);
+ else if (s.parser_)
+ s.parser_->_attribute (ns, name, value);
+ }
+ else
+ {
+- if (!_attribute_impl (ns, name, value))
+- _unexpected_attribute (ns, name, value);
++ if (!this->_attribute_impl (ns, name, value))
++ this->_unexpected_attribute (ns, name, value);
+ }
+ }
+
+@@ -438,13 +438,13 @@
+ if (s.depth_ > 0)
+ {
+ if (s.any_)
+- _any_characters (str);
++ this->_any_characters (str);
+ else if (s.parser_)
+ s.parser_->_characters (str);
+ }
+ else
+ {
+- if (!_characters_impl (str))
++ if (!this->_characters_impl (str))
+ {
+ // Mixed content is implemented in the generated code
+ // by overriding _characters_impl and forwarding to
+@@ -463,7 +463,7 @@
+ c != C (0x0D) && // carriage return
+ c != C (0x09) && // tab
+ c != C (0x0A))
+- _unexpected_characters (str);
++ this->_unexpected_characters (str);
+ }
+ }
+ }
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/parser/validating/xml-schema-pskel.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -20,7 +20,7 @@
+ const ro_string<C>& name,
+ const ro_string<C>* type)
+ {
+- _start_any_element (ns, name, type);
++ this->_start_any_element (ns, name, type);
+ this->complex_content<C>::context_.top ().any_ = true;
+ return true;
+ }
+@@ -30,7 +30,7 @@
+ _end_element_impl (const ro_string<C>& ns, const ro_string<C>& name)
+ {
+ this->complex_content<C>::context_.top ().any_ = false;
+- _end_any_element (ns, name);
++ this->_end_any_element (ns, name);
+ return true;
+ }
+
+@@ -41,7 +41,7 @@
+ const ro_string<C>& name,
+ const ro_string<C>& value)
+ {
+- _any_attribute (ns, name, value);
++ this->_any_attribute (ns, name, value);
+ return true;
+ }
+
+@@ -49,7 +49,7 @@
+ bool any_type_pskel<C>::
+ _characters_impl (const ro_string<C>& s)
+ {
+- _any_characters (s);
++ this->_any_characters (s);
+ return true;
+ }
+
+@@ -60,7 +60,7 @@
+ bool any_simple_type_pskel<C>::
+ _characters_impl (const ro_string<C>& s)
+ {
+- _any_characters (s);
++ this->_any_characters (s);
+ return true;
+ }
+ }
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/tree/parsing.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/tree/parsing.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/tree/parsing.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/tree/parsing.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -299,7 +299,7 @@
+
+ if (j != basic_string<C>::npos)
+ {
+- push_back (
++ this->push_back (
+ traits<T, C, ST>::create (
+ basic_string<C> (data + i, j - i), parent, 0, 0));
+
+@@ -309,7 +309,7 @@
+ {
+ // Last element.
+ //
+- push_back (
++ this->push_back (
+ traits<T, C, ST>::create (
+ basic_string<C> (data + i, size - i), parent, 0, 0));
+
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/tree/stream-extraction.hxx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/tree/stream-extraction.hxx
+--- xsd-3.3.0/libxsd/xsd/cxx/tree/stream-extraction.hxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/tree/stream-extraction.hxx 2012-06-03 11:03:11.000000000 +0200
+@@ -68,7 +68,7 @@
+ while (size--)
+ {
+ std::auto_ptr<T> p (new T (s, f, c));
+- push_back (p);
++ this->push_back (p);
+ }
+ }
+ }
+@@ -91,7 +91,7 @@
+ {
+ T x;
+ s >> x;
+- push_back (x);
++ this->push_back (x);
+ }
+ }
+ }
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/libxsd/xsd/cxx/zc-istream.txx xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/zc-istream.txx
+--- xsd-3.3.0/libxsd/xsd/cxx/zc-istream.txx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/libxsd/xsd/cxx/zc-istream.txx 2012-06-03 11:02:09.000000000 +0200
+@@ -32,7 +32,7 @@
+ C* b (const_cast<C*> (str_.data ()));
+ C* e (b + str_.size ());
+
+- setg (b, b, e);
++ this->setg (b, b, e);
+ }
+
+ template <typename C>
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/cxx/elements.cxx xsd-3.3.0-2+dep/xsd/xsd/cxx/elements.cxx
+--- xsd-3.3.0/xsd/cxx/elements.cxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/cxx/elements.cxx 2012-06-03 11:02:29.000000000 +0200
+@@ -326,7 +326,11 @@
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ pair = path.native_file_string ();
++#else
++ pair = path.string ();
++#endif
+ }
+ }
+
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/cxx/parser/elements.cxx xsd-3.3.0-2+dep/xsd/xsd/cxx/parser/elements.cxx
+--- xsd-3.3.0/xsd/cxx/parser/elements.cxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/cxx/parser/elements.cxx 2012-06-03 11:02:29.000000000 +0200
+@@ -244,7 +244,11 @@
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ path_str = path.native_file_string ();
++#else
++ path_str = path.string ();
++#endif
+ }
+
+ String inc_path;
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/cxx/parser/generator.cxx xsd-3.3.0-2+dep/xsd/xsd/cxx/parser/generator.cxx
+--- xsd-3.3.0/xsd/cxx/parser/generator.cxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/cxx/parser/generator.cxx 2012-06-03 11:02:29.000000000 +0200
+@@ -552,7 +552,11 @@
+ {
+ try
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ Path fs_path (path, boost::filesystem::native);
++#else
++ Path fs_path (path.c_str());
++#endif
+ ifs.open (fs_path, std::ios_base::in | std::ios_base::binary);
+
+ if (!ifs.is_open ())
+@@ -638,7 +642,11 @@
+ {
+ if (NarrowString name = ops.value<CLI::extern_xml_schema> ())
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ if (file_path.native_file_string () != name)
++#else
++ if (file_path.string () != name)
++#endif
+ generate_xml_schema = false;
+ }
+ }
+@@ -815,7 +823,11 @@
+
+ // Generate code.
+ //
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ NarrowString name (file_path.leaf ());
++#else
++ NarrowString name (file_path.filename().string());
++#endif
+ NarrowString skel_suffix (ops.value <CLI::skel_file_suffix> ());
+ NarrowString impl_suffix (ops.value <CLI::impl_file_suffix> ());
+
+@@ -921,9 +933,15 @@
+ cxx_driver_name = cxx_driver_expr.merge (name);
+ }
+
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ Path hxx_path (hxx_name, boost::filesystem::native);
+ Path ixx_path (ixx_name, boost::filesystem::native);
+ Path cxx_path (cxx_name, boost::filesystem::native);
++#else
++ Path hxx_path (hxx_name.c_str());
++ Path ixx_path (ixx_name.c_str());
++ Path cxx_path (cxx_name.c_str());
++#endif
+
+ Path hxx_impl_path;
+ Path cxx_impl_path;
+@@ -931,9 +949,15 @@
+
+ if (impl || driver)
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ hxx_impl_path = Path (hxx_impl_name, boost::filesystem::native);
+ cxx_impl_path = Path (cxx_impl_name, boost::filesystem::native);
+ cxx_driver_path = Path (cxx_driver_name, boost::filesystem::native);
++#else
++ hxx_impl_path = Path (hxx_impl_name.c_str());
++ cxx_impl_path = Path (cxx_impl_name.c_str());
++ cxx_driver_path = Path (cxx_driver_name.c_str());
++#endif
+ }
+
+ Path out_dir;
+@@ -942,7 +966,11 @@
+ {
+ try
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ out_dir = Path (dir, boost::filesystem::native);
++#else
++ out_dir = Path (dir.c_str());
++#endif
+ }
+ catch (InvalidPath const&)
+ {
+@@ -1010,7 +1038,11 @@
+ }
+
+ unlinks.add (hxx_impl_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (hxx_impl_path.native_file_string ());
++#else
++ file_list.push_back (hxx_impl_path.string ());
++#endif
+
+ if (!ops.value<CLI::force_overwrite> ())
+ {
+@@ -1036,7 +1068,11 @@
+ }
+
+ unlinks.add (cxx_impl_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (cxx_impl_path.native_file_string ());
++#else
++ file_list.push_back (cxx_impl_path.string ());
++#endif
+ }
+
+ if (driver)
+@@ -1065,7 +1101,11 @@
+ }
+
+ unlinks.add (cxx_driver_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (cxx_driver_path.native_file_string ());
++#else
++ file_list.push_back (cxx_driver_path.string ());
++#endif
+ }
+
+ // Open the skel files.
+@@ -1081,7 +1121,11 @@
+ }
+
+ unlinks.add (hxx_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (hxx_path.native_file_string ());
++#else
++ file_list.push_back (hxx_path.string ());
++#endif
+
+ if (inline_)
+ {
+@@ -1094,7 +1138,11 @@
+ }
+
+ unlinks.add (ixx_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (ixx_path.native_file_string ());
++#else
++ file_list.push_back (ixx_path.string ());
++#endif
+ }
+
+
+@@ -1109,7 +1157,11 @@
+ }
+
+ unlinks.add (cxx_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (cxx_path.native_file_string ());
++#else
++ file_list.push_back (cxx_path.string ());
++#endif
+ }
+
+ // Print copyright and license.
+@@ -1168,7 +1220,11 @@
+ NarrowString guard_prefix (ops.value<CLI::guard_prefix> ());
+
+ if (!guard_prefix)
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ guard_prefix = file_path.branch_path ().native_directory_string ();
++#else
++ guard_prefix = file_path.branch_path ().string ();
++#endif
+
+ if (guard_prefix)
+ guard_prefix += '_';
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/cxx/tree/elements.cxx xsd-3.3.0-2+dep/xsd/xsd/cxx/tree/elements.cxx
+--- xsd-3.3.0/xsd/cxx/tree/elements.cxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/cxx/tree/elements.cxx 2012-06-03 11:02:29.000000000 +0200
+@@ -1312,7 +1312,11 @@
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ path_str = path.native_file_string ();
++#else
++ path_str = path.string ();
++#endif
+ }
+
+ String inc_path;
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/cxx/tree/generator.cxx xsd-3.3.0-2+dep/xsd/xsd/cxx/tree/generator.cxx
+--- xsd-3.3.0/xsd/cxx/tree/generator.cxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/cxx/tree/generator.cxx 2012-06-03 11:02:29.000000000 +0200
+@@ -773,7 +773,11 @@
+ {
+ try
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ Path fs_path (path, boost::filesystem::native);
++#else
++ Path fs_path (path.c_str());
++#endif
+ ifs.open (fs_path, std::ios_base::in | std::ios_base::binary);
+
+ if (!ifs.is_open ())
+@@ -939,7 +943,11 @@
+ {
+ if (NarrowString name = ops.value<CLI::extern_xml_schema> ())
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ if (file_path.native_file_string () != name)
++#else
++ if (file_path.string () != name)
++#endif
+ generate_xml_schema = false;
+ }
+ }
+@@ -954,7 +962,11 @@
+
+ // Generate code.
+ //
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ NarrowString name (file_path.leaf ());
++#else
++ NarrowString name (file_path.filename ().string());
++#endif
+
+ NarrowString hxx_suffix (ops.value <CLI::hxx_suffix> ());
+ NarrowString ixx_suffix (ops.value <CLI::ixx_suffix> ());
+@@ -1013,9 +1025,15 @@
+ NarrowString ixx_name (inline_ ? ixx_expr.merge (name) : NarrowString ());
+ NarrowString fwd_name (forward ? fwd_expr.merge (name) : NarrowString ());
+
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ Path hxx_path (hxx_name, boost::filesystem::native);
+ Path ixx_path (ixx_name, boost::filesystem::native);
+ Path fwd_path (fwd_name, boost::filesystem::native);
++#else
++ Path hxx_path (hxx_name.c_str());
++ Path ixx_path (ixx_name.c_str());
++ Path fwd_path (fwd_name.c_str());
++#endif
+ Paths cxx_paths;
+
+ if (source)
+@@ -1041,12 +1059,20 @@
+ }
+
+ cxx_paths.push_back (
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ Path (cxx_expr.merge (part_name), boost::filesystem::native));
++#else
++ Path (cxx_expr.merge (part_name).c_str()));
++#endif
+ }
+ }
+ else
+ cxx_paths.push_back (
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ Path (cxx_expr.merge (name), boost::filesystem::native));
++#else
++ Path (cxx_expr.merge (name).c_str()));
++#endif
+ }
+
+ Path out_dir;
+@@ -1055,7 +1081,11 @@
+ {
+ try
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ out_dir = Path (dir, boost::filesystem::native);
++#else
++ out_dir = Path (dir.c_str());
++#endif
+ }
+ catch (InvalidPath const&)
+ {
+@@ -1108,7 +1138,11 @@
+ }
+
+ unlinks.add (fwd_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (fwd_path.native_file_string ());
++#else
++ file_list.push_back (fwd_path.string ());
++#endif
+ }
+
+
+@@ -1121,7 +1155,11 @@
+ }
+
+ unlinks.add (hxx_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (hxx_path.native_file_string ());
++#else
++ file_list.push_back (hxx_path.string ());
++#endif
+
+
+ // IXX
+@@ -1137,7 +1175,11 @@
+ }
+
+ unlinks.add (ixx_path);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (ixx_path.native_file_string ());
++#else
++ file_list.push_back (ixx_path.string ());
++#endif
+ }
+
+
+@@ -1158,7 +1200,11 @@
+ }
+
+ unlinks.add (*i);
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ file_list.push_back (i->native_file_string ());
++#else
++ file_list.push_back (i->string ());
++#endif
+ cxx.push_back (s);
+ }
+ }
+@@ -1230,7 +1276,11 @@
+ NarrowString guard_prefix (ops.value<CLI::guard_prefix> ());
+
+ if (!guard_prefix)
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ guard_prefix = file_path.branch_path ().native_directory_string ();
++#else
++ guard_prefix = file_path.branch_path ().string ();
++#endif
+
+ if (guard_prefix)
+ guard_prefix += '_';
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/xsd.cxx xsd-3.3.0-2+dep/xsd/xsd/xsd.cxx
+--- xsd-3.3.0/xsd/xsd.cxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/xsd.cxx 2012-06-03 11:02:29.000000000 +0200
+@@ -636,7 +636,11 @@
+
+ try
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ tu = SemanticGraph::Path (args[i], boost::filesystem::native);
++#else
++ tu = SemanticGraph::Path (args[i]);
++#endif
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+@@ -675,7 +679,11 @@
+ if (NarrowString name =
+ tree_ops->value<CXX::Tree::CLI::extern_xml_schema> ())
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ if (tu.native_file_string () != name)
++#else
++ if (tu.string () != name)
++#endif
+ gen_xml_schema = false;
+ }
+ }
+@@ -690,7 +698,11 @@
+ if (NarrowString name =
+ parser_ops->value<CXX::Parser::CLI::extern_xml_schema> ())
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ if (tu.native_file_string () != name)
++#else
++ if (tu.string () != name)
++#endif
+ gen_xml_schema = false;
+ }
+ }
+@@ -827,8 +839,13 @@
+ {
+ try
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ paths.push_back (
+ SemanticGraph::Path (args[i], boost::filesystem::native));
++#else
++ paths.push_back (
++ SemanticGraph::Path (args[i]));
++#endif
+ }
+ catch (SemanticGraph::InvalidPath const&)
+ {
+@@ -991,9 +1008,17 @@
+ try
+ {
+ OutputFileStream ofs;
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ SemanticGraph::Path path (fl);
++#else
++ SemanticGraph::Path path (fl.c_str());
++#endif
+
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ ofs.open (fl, std::ios_base::out);
++#else
++ ofs.open (fl.c_str(), std::ios_base::out);
++#endif
+
+ if (!ofs.is_open ())
+ {
+diff -Naurb -I '^//' -I '^# copyright' -x vcproj -x build xsd-3.3.0/xsd/xsd.hxx xsd-3.3.0-2+dep/xsd/xsd/xsd.hxx
+--- xsd-3.3.0/xsd/xsd.hxx 2010-04-28 08:58:09.000000000 +0200
++++ xsd-3.3.0-2+dep/xsd/xsd/xsd.hxx 2012-06-03 11:02:29.000000000 +0200
+@@ -38,7 +38,11 @@
+ {
+ if (!canceled_)
+ {
++#if !defined(BOOST_FILESYSTEM_VERSION) || BOOST_FILESYSTEM_VERSION == 2
+ std::remove (file_.native_file_string ().c_str ());
++#else
++ std::remove (file_.string ().c_str ());
++#endif
+ }
+ }
+
diff --git a/dev-cpp/xsd/files/3.3.0-disable_examples_and_tests.patch b/dev-cpp/xsd/files/3.3.0-disable_examples_and_tests.patch
new file mode 100644
index 00000000000..605d1635470
--- /dev/null
+++ b/dev-cpp/xsd/files/3.3.0-disable_examples_and_tests.patch
@@ -0,0 +1,55 @@
+diff --git a/makefile b/makefile
+index 0c07b0d..32c2c93 100644
+--- a/makefile
++++ b/makefile
+@@ -14,8 +14,6 @@ clean := $(out_base)/.clean
+ cleandoc := $(out_base)/.cleandoc
+
+ $(default): $(out_base)/xsd/ \
+- $(out_base)/tests/ \
+- $(out_base)/examples/ \
+ $(out_base)/documentation/
+
+ # Test.
+@@ -27,7 +25,6 @@ $(test): $(out_base)/tests/.test
+ #
+ $(install): $(out_base)/xsd/.install \
+ $(out_base)/libxsd/.install \
+- $(out_base)/examples/.install \
+ $(out_base)/documentation/.install
+ $(call install-dir,$(src_base)/dist/examples/build,$(install_doc_dir)/xsd/examples/build)
+ $(call install-dir,$(src_base)/dist/examples/cxx,$(install_doc_dir)/xsd/examples/cxx,-name makefile)
+@@ -43,7 +40,6 @@ $(install): $(out_base)/xsd/.install \
+ #
+ $(dist): $(out_base)/xsd/.dist \
+ $(out_base)/libxsd/.dist \
+- $(out_base)/examples/.dist \
+ $(out_base)/documentation/.dist
+ $(call install-dir,$(src_base)/dist/examples/build,$(dist_prefix)/examples/build)
+ $(call install-dir,$(src_base)/dist/examples/cxx,$(dist_prefix)/examples/cxx,-name makefile)
+@@ -57,7 +53,6 @@ $(dist): $(out_base)/xsd/.dist \
+
+ $(dist-win): $(out_base)/xsd/.dist-win \
+ $(out_base)/libxsd/.dist-win \
+- $(out_base)/examples/.dist-win \
+ $(out_base)/documentation/.dist-win
+ $(call install-dir,$(src_base)/dist/etc,$(dist_prefix)/etc)
+ $(call install-dir,$(src_base)/dist/examples/build,$(dist_prefix)/examples/build)
+@@ -81,9 +76,7 @@ $(dist-win): $(out_base)/xsd/.dist-win \
+
+ # Clean.
+ #
+-$(clean): $(out_base)/xsd/.clean \
+- $(out_base)/tests/.clean \
+- $(out_base)/examples/.clean
++$(clean): $(out_base)/xsd/.clean
+
+ $(cleandoc): $(out_base)/documentation/.cleandoc
+
+@@ -91,6 +84,4 @@ $(call include,$(bld_root)/install.make)
+
+ $(call import,$(src_base)/xsd/makefile)
+ $(call import,$(src_base)/libxsd/makefile)
+-$(call import,$(src_base)/tests/makefile)
+-$(call import,$(src_base)/examples/makefile)
+ $(call import,$(src_base)/documentation/makefile)
diff --git a/dev-cpp/xsd/files/3.3.0-fix_include.patch b/dev-cpp/xsd/files/3.3.0-fix_include.patch
new file mode 100644
index 00000000000..5ba74201848
--- /dev/null
+++ b/dev-cpp/xsd/files/3.3.0-fix_include.patch
@@ -0,0 +1,13 @@
+diff --git a/xsd/xsd.cxx b/xsd/xsd.cxx
+index 1c66a8a..dbbfed9 100644
+--- a/xsd/xsd.cxx
++++ b/xsd/xsd.cxx
+@@ -18,7 +18,7 @@
+
+ #include <xsd-frontend/parser.hxx>
+ #include <xsd-frontend/transformations/anonymous.hxx>
+-#include <xsd-frontend/transformations/enum-synthesis.cxx>
++#include <xsd-frontend/transformations/enum-synthesis.hxx>
+ #include <xsd-frontend/transformations/restriction.hxx>
+ #include <xsd-frontend/transformations/schema-per-type.hxx>
+ #include <xsd-frontend/transformations/simplifier.hxx>
diff --git a/dev-cpp/xsd/files/3.3.0-fix_tests.patch b/dev-cpp/xsd/files/3.3.0-fix_tests.patch
new file mode 100644
index 00000000000..f8de00d371f
--- /dev/null
+++ b/dev-cpp/xsd/files/3.3.0-fix_tests.patch
@@ -0,0 +1,13 @@
+diff --git a/tests/cxx/tree/prefix/makefile b/tests/cxx/tree/prefix/makefile
+index 3317161..77b4b0a 100644
+--- a/tests/cxx/tree/prefix/makefile
++++ b/tests/cxx/tree/prefix/makefile
+@@ -35,7 +35,7 @@ gen := $(addprefix $(out_base)/,$(genf))
+
+ $(gen): xsd := $(out_root)/xsd/xsd
+ $(gen): xsd_options := --generate-serialization --generate-polymorphic \
+---polymorphic-type foo\\\#base --root-element root
++--polymorphic-type foo\\\\\#base --root-element root
+ $(gen): $(out_root)/xsd/xsd
+
+ $(call include-dep,$(dep))
diff --git a/dev-cpp/xsd/files/3.3.0-xsdcxx-rename.patch b/dev-cpp/xsd/files/3.3.0-xsdcxx-rename.patch
new file mode 100644
index 00000000000..b99a44eab29
--- /dev/null
+++ b/dev-cpp/xsd/files/3.3.0-xsdcxx-rename.patch
@@ -0,0 +1,121 @@
+diff --git a/documentation/xsd.1 b/documentation/xsd.1
+index 8b97b14..213f6f6 100644
+--- a/documentation/xsd.1
++++ b/documentation/xsd.1
+@@ -1,16 +1,16 @@
+ .\" Process this file with
+-.\" groff -man -Tascii xsd.1
++.\" groff -man -Tascii xsdcxx.1
+ .\"
+ .TH XSD 1 "April 2010" "XSD 3.3.0"
+ .SH NAME
+-xsd \- W3C XML Schema to C++ Compiler
++xsdcxx \- W3C XML Schema to C++ Compiler
+ .\"
+ .\"
+ .\"
+ .\"--------------------------------------------------------------------
+ .SH SYNOPSIS
+ .\"--------------------------------------------------------------------
+-.B xsd
++.B xsdcxx
+ .I command
+ .B [
+ .I options
+@@ -20,19 +20,19 @@ xsd \- W3C XML Schema to C++ Compiler
+ .I file
+ .B ...]
+ .in
+-.B xsd help
++.B xsdcxx help
+ .B [
+ .I command
+ .B ]
+ .in
+-.B xsd version
++.B xsdcxx version
+ .\"
+ .\"
+ .\"
+ .\"--------------------------------------------------------------------
+ .SH DESCRIPTION
+ .\"--------------------------------------------------------------------
+-.B xsd
++.B xsdcxx
+ generates vocabulary-specific, statically-typed C++ mapping from W3C XML
+ Schema definitions. Particular mapping to produce is selected by a
+ .IR command .
+@@ -203,7 +203,7 @@ For example, if you have file
+ with namespace
+ .B http://example.com/hello
+ and you run
+-.B xsd
++.B xsdcxx
+ on this file, then the string in question will be:
+
+ .B hello.xsd. http://example.com/hello
+@@ -1877,7 +1877,7 @@ option. With this approach you don't need to worry about shell quoting.
+ .\"
+ .SH DIAGNOSTICS
+ If the input file is not a valid W3C XML Schema definition,
+-.B xsd
++.B xsdcxx
+ will issue diagnostic messages to
+ .B STDERR
+ and exit with non-zero exit code.
+diff --git a/documentation/xsd.xhtml b/documentation/xsd.xhtml
+index 4acf822..af630bf 100644
+--- a/documentation/xsd.xhtml
++++ b/documentation/xsd.xhtml
+@@ -50,19 +50,19 @@
+
+ <h1>NAME</h1>
+
+- <p>xsd - W3C XML Schema to C++ Compiler</p>
++ <p>xsdcxx - W3C XML Schema to C++ Compiler</p>
+
+ <h1>SYNOPSIS</h1>
+
+ <dl id="synopsis">
+- <dt><code><b>xsd</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
+- <dt><code><b>xsd help</b> [<i>command</i>]</code></dt>
+- <dt><code><b>xsd version</b></code></dt>
++ <dt><code><b>xsdcxx</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
++ <dt><code><b>xsdcxx help</b> [<i>command</i>]</code></dt>
++ <dt><code><b>xsdcxx version</b></code></dt>
+ </dl>
+
+ <h1>DESCRIPTION</h1>
+
+- <p><code><b>xsd</b></code> generates vocabulary-specific, statically-typed
++ <p><code><b>xsdcxx</b></code> generates vocabulary-specific, statically-typed
+ C++ mapping from W3C XML Schema definitions. Particular mapping to
+ produce is selected by a <code><i>command</i></code>. Each mapping has
+ a number of mapping-specific <code><i>options</i></code> that should
+@@ -104,7 +104,7 @@
+
+ <dt><code><b>help</b></code></dt>
+ <dd>Print usage information and exit. Use
+- <p><code><b>xsd help</b> <i>command</i></code></p>
++ <p><code><b>xsdcxx help</b> <i>command</i></code></p>
+ for command-specific help.
+ </dd>
+
+@@ -174,7 +174,7 @@
+
+ <p>For example, if you have file <code><b>hello.xsd</b></code>
+ with namespace <code><b>http://example.com/hello</b></code> and you run
+- <code><b>xsd</b></code> on this file, then the string in question
++ <code><b>xsdcxx</b></code> on this file, then the string in question
+ will be:</p>
+
+ <p><code><b>hello.xsd. http://example.com/hello</b></code></p>
+@@ -1575,7 +1575,7 @@ namespace .*
+ <h1>DIAGNOSTICS</h1>
+
+ <p>If the input file is not a valid W3C XML Schema definition,
+- <code><b>xsd</b></code> will issue diagnostic messages to STDERR
++ <code><b>xsdcxx</b></code> will issue diagnostic messages to STDERR
+ and exit with non-zero exit code.</p>
+
+ <h1>BUGS</h1>
diff --git a/dev-cpp/xsd/metadata.xml b/dev-cpp/xsd/metadata.xml
new file mode 100644
index 00000000000..e5a5bb3c962
--- /dev/null
+++ b/dev-cpp/xsd/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>dev-zero@gentoo.org</email>
+ <name>Tiziano Müller</name>
+</maintainer>
+<use>
+ <flag name="ace">Enable support for serializing to/from an ACE CDR stream</flag>
+</use>
+</pkgmetadata>
diff --git a/dev-cpp/xsd/xsd-3.3.0-r3.ebuild b/dev-cpp/xsd/xsd-3.3.0-r3.ebuild
new file mode 100644
index 00000000000..f9e2c435e33
--- /dev/null
+++ b/dev-cpp/xsd/xsd-3.3.0-r3.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit toolchain-funcs eutils versionator
+
+DESCRIPTION="An open-source, cross-platform W3C XML Schema to C++ data binding compiler"
+HOMEPAGE="http://www.codesynthesis.com/products/xsd/"
+SRC_URI="http://www.codesynthesis.com/download/${PN}/$(get_version_component_range 1-2)/${P}.tar.bz2"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm ppc ppc64 x86"
+IUSE="ace doc examples test zlib"
+
+RDEPEND=">=dev-libs/xerces-c-3
+ >=dev-libs/boost-1.52.0-r1:=[threads]
+ >=dev-cpp/libcult-1.4.6-r1
+ >=dev-cpp/libxsd-frontend-1.18.0-r1
+ >=dev-cpp/libbackend-elements-1.7.2
+ ace? ( dev-libs/ace )
+ zlib? ( sys-libs/zlib )"
+DEPEND="${RDEPEND}
+ dev-util/build
+ doc? ( app-doc/doxygen )"
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}/${PV}-disable_examples_and_tests.patch" \
+ "${FILESDIR}/${PV}-xsdcxx-rename.patch" \
+ "${FILESDIR}/${PV}-fix_include.patch" \
+ "${FILESDIR}/${PV}-fix_tests.patch" \
+ "${FILESDIR}/${PV}-boost-filesystem-v2-deprecation.patch"
+}
+
+src_configure() {
+ # Maintainer notes:
+ # * xqilla is not required, this is only whether or not to include the xpath
+ # examples which require xqilla
+ mkdir -p \
+ build/cxx/gnu \
+ build/import/lib{ace,boost,cult,backend-elements,xerces-c,xqilla,xsd-frontend,z}
+
+ cat >> build/configuration-dynamic.make <<- EOF
+xsd_with_zlib := $(usex zlib y n)
+xsd_with_ace := $(usex ace y n)
+xsd_with_xdr := y
+xsd_with_dbxml := n
+xsd_with_xqilla := y
+xsd_with_boost_date_time := y
+xsd_with_boost_serialization := y
+ EOF
+
+ cat >> build/cxx/configuration-dynamic.make <<- EOF
+cxx_id := gnu
+cxx_optimize := n
+cxx_debug := n
+cxx_rpath := n
+cxx_pp_extra_options :=
+cxx_extra_options := ${CXXFLAGS}
+cxx_ld_extra_options := ${LDFLAGS}
+cxx_extra_libs :=
+cxx_extra_lib_paths :=
+ EOF
+
+ cat >> build/cxx/gnu/configuration-dynamic.make <<- EOF
+cxx_gnu := $(tc-getCXX)
+cxx_gnu_libraries :=
+cxx_gnu_optimization_options :=
+ EOF
+
+ cat >> build/import/libace/configuration-dynamic.make <<- EOF
+libace_installed := y
+ EOF
+
+ cat >> build/import/libbackend-elements/configuration-dynamic.make <<- EOF
+libbackend_elements_installed := y
+ EOF
+
+ cat >> build/import/libboost/configuration-dynamic.make <<- EOF
+libboost_installed := y
+libboost_system := y
+ EOF
+
+ cat >> build/import/libcult/configuration-dynamic.make <<- EOF
+libcult_installed := y
+ EOF
+
+ cat >> build/import/libxerces-c/configuration-dynamic.make <<- EOF
+libxerces_c_installed := y
+ EOF
+
+ cat >> build/import/libxqilla/configuration-dynamic.make <<- EOF
+libxqilla_installed := y
+ EOF
+
+ cat >> build/import/libxsd-frontend/configuration-dynamic.make <<- EOF
+libxsd_frontend_installed := y
+ EOF
+
+ cat >> build/import/libz/configuration-dynamic.make <<- EOF
+libz_installed := y
+ EOF
+
+ MAKEOPTS+=" verbose=1"
+}
+
+src_compile() {
+ default
+ if use doc ; then
+ emake -C "${S}/documentation/cxx/tree/reference" || die "generating reference docs failed"
+ fi
+ if use test ; then
+ XERCESC_NLS_HOME="${ROOT}usr/share/xerces-c/msg" emake -C "${S}/tests" || die "building tests failed"
+ fi
+}
+
+src_install() {
+ emake install_prefix="${D}/usr" install || die "emake install failed"
+
+ # Renaming binary/manpage to avoid collision with mono-2.0's xsd/xsd2
+ mv "${D}"/usr/bin/xsd{,cxx}
+ mv "${D}"/usr/share/man/man1/xsd{,cxx}.1
+
+ rm -rf "${D}/usr/share/doc"
+
+ dohtml -r -A xhtml -A pdf documentation/*
+
+ dodoc NEWS README FLOSSE documentation/custom-literals.xsd
+ newdoc libxsd/README README.libxsd
+ newdoc libxsd/FLOSSE FLOSSE.libxsd
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r examples
+ fi
+}
+
+src_test() {
+ XERCESC_NLS_HOME="${ROOT}usr/share/xerces-c/msg" emake -C "${S}/tests" test || die "tests failed"
+}