From 60b3a2030208ab590265be20f691983b0579f890 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sun, 13 Sep 2015 17:00:56 +0200 Subject: [PATCH] - updated to 1.59.0 - added windows-decl patch (fixes serialization module issues with gcc) - added context-mingw patch (updates gas/win32 support) --- boost-context-mingw.patch | 36 +++++ boost-windows-decl.patch | 318 ++++++++++++++++++++++++++++++++++++++ crossmingw32-boost.spec | 26 +++- 3 files changed, 372 insertions(+), 8 deletions(-) create mode 100644 boost-context-mingw.patch create mode 100644 boost-windows-decl.patch diff --git a/boost-context-mingw.patch b/boost-context-mingw.patch new file mode 100644 index 0000000..895d438 --- /dev/null +++ b/boost-context-mingw.patch @@ -0,0 +1,36 @@ +--- libs/context/src/asm/jump_i386_ms_pe_gas.asm.mingw 2015-09-02 16:03:06.406321632 +0200 ++++ libs/context/src/asm/jump_i386_ms_pe_gas.asm 2015-09-02 16:04:17.632915315 +0200 +@@ -138,3 +138,6 @@ + + /* indirect jump to context */ + jmp *%edx ++ ++.section .drectve ++.ascii " -export:\"jump_fcontext\"" +--- libs/context/src/asm/jump_x86_64_ms_pe_gas.asm.mingw 2015-09-02 16:03:13.495380721 +0200 ++++ libs/context/src/asm/jump_x86_64_ms_pe_gas.asm 2015-09-02 16:04:12.488872439 +0200 +@@ -223,3 +223,6 @@ + /* indirect jump to context */ + jmp *%r10 + .seh_endproc ++ ++.section .drectve ++.ascii " -export:\"jump_fcontext\"" +--- libs/context/src/asm/make_i386_ms_pe_gas.asm.mingw 2015-09-02 16:03:22.486455662 +0200 ++++ libs/context/src/asm/make_i386_ms_pe_gas.asm 2015-09-02 16:04:32.409038476 +0200 +@@ -122,3 +122,6 @@ + hlt + + .def __exit; .scl 2; .type 32; .endef /* standard C library function */ ++ ++.section .drectve ++.ascii " -export:\"make_fcontext\"" +--- libs/context/src/asm/make_x86_64_ms_pe_gas.asm.mingw 2015-09-02 16:03:30.631523552 +0200 ++++ libs/context/src/asm/make_x86_64_ms_pe_gas.asm 2015-09-02 16:04:27.433997008 +0200 +@@ -149,3 +149,6 @@ + .seh_endproc + + .def _exit; .scl 2; .type 32; .endef /* standard C library function */ ++ ++.section .drectve ++.ascii " -export:\"make_fcontext\"" diff --git a/boost-windows-decl.patch b/boost-windows-decl.patch new file mode 100644 index 0000000..e6d7947 --- /dev/null +++ b/boost-windows-decl.patch @@ -0,0 +1,318 @@ +From d635772bc306b69ec6ad22313d673d0333f863a1 Mon Sep 17 00:00:00 2001 +From: Edward Diener +Date: Mon, 20 Jul 2015 23:35:19 -0400 +Subject: [PATCH 1/5] Added missing decl attribute + +--- + src/archive_exception.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp +index b850f89..38c6c9c 100644 +--- a/libs/serialization/src/archive_exception.cpp ++++ b/libs/serialization/src/archive_exception.cpp +@@ -21,6 +21,7 @@ + namespace boost { + namespace archive { + ++BOOST_ARCHIVE_DECL + unsigned int + archive_exception::append(unsigned int l, const char * a){ + while(l < (sizeof(m_buffer) - 1)){ + +From 0386df9cba448c6256d18fc542b8f21cec626dee Mon Sep 17 00:00:00 2001 +From: Edward Diener +Date: Mon, 20 Jul 2015 23:36:46 -0400 +Subject: [PATCH 2/5] Move inline function out of line since it is being + exported/imported. This fixes a problem with gcc. + +--- + include/boost/archive/detail/basic_oarchive.hpp | 4 +--- + src/basic_oarchive.cpp | 5 +++++ + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/include/boost/archive/detail/basic_oarchive.hpp b/include/boost/archive/detail/basic_oarchive.hpp +index 702c560..03ad17b 100644 +--- a/boost/archive/detail/basic_oarchive.hpp ++++ b/boost/archive/detail/basic_oarchive.hpp +@@ -61,9 +61,7 @@ class BOOST_SYMBOL_VISIBLE basic_oarchive : + protected: + BOOST_ARCHIVE_DECL basic_oarchive(unsigned int flags = 0); + BOOST_ARCHIVE_DECL boost::archive::detail::helper_collection & +- get_helper_collection(){ +- return *this; +- } ++ get_helper_collection(); + // account for bogus gcc warning + #if defined(__GNUC__) + virtual +diff --git a/src/basic_oarchive.cpp b/src/basic_oarchive.cpp +index c99baeb..18522af 100644 +--- a/libs/serialization/src/basic_oarchive.cpp ++++ b/libs/serialization/src/basic_oarchive.cpp +@@ -454,6 +454,11 @@ BOOST_ARCHIVE_DECL void + basic_oarchive::end_preamble(){ + } + ++BOOST_ARCHIVE_DECL helper_collection & ++basic_oarchive::get_helper_collection(){ ++ return *this; ++} ++ + } // namespace detail + } // namespace archive + } // namespace boost + +From 6b906b43618eea9d783128ec0f4524df89c1dcc8 Mon Sep 17 00:00:00 2001 +From: Edward Diener +Date: Mon, 27 Jul 2015 17:47:21 -0400 +Subject: [PATCH 3/5] Add copy constructor + +--- + include/boost/archive/archive_exception.hpp | 1 + + src/archive_exception.cpp | 12 +++++++++++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/include/boost/archive/archive_exception.hpp b/include/boost/archive/archive_exception.hpp +index 1159d27..fabcdb5 100644 +--- a/boost/archive/archive_exception.hpp ++++ b/boost/archive/archive_exception.hpp +@@ -87,6 +87,7 @@ class BOOST_SYMBOL_VISIBLE archive_exception : + const char * e1 = NULL, + const char * e2 = NULL + ) BOOST_NOEXCEPT; ++ BOOST_ARCHIVE_DECL archive_exception(archive_exception const &) BOOST_NOEXCEPT ; + virtual BOOST_ARCHIVE_DECL ~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; + virtual BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; + }; +diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp +index 38c6c9c..94aae50 100644 +--- a/libs/serialization/src/archive_exception.cpp ++++ b/libs/serialization/src/archive_exception.cpp +@@ -14,6 +14,7 @@ + + #include + #include ++#include + + #define BOOST_ARCHIVE_SOURCE + #include +@@ -110,13 +111,22 @@ archive_exception::archive_exception( + break; + } + } ++ ++BOOST_ARCHIVE_DECL ++archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT : ++ code(oth.code) ++{ ++ std::memcpy(m_buffer,oth.m_buffer,sizeof m_buffer); ++} ++ + BOOST_ARCHIVE_DECL + archive_exception::~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} + + BOOST_ARCHIVE_DECL const char * +-archive_exception::what( ) const BOOST_NOEXCEPT_OR_NOTHROW { ++archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW { + return m_buffer; + } ++ + BOOST_ARCHIVE_DECL + archive_exception::archive_exception() BOOST_NOEXCEPT : + code(no_exception) + +From 643fff144cee5b518cd7b07d8a619564c0b8b1d1 Mon Sep 17 00:00:00 2001 +From: Edward Diener +Date: Fri, 31 Jul 2015 06:46:14 -0400 +Subject: [PATCH 4/5] Changes for wide character serialization + +--- + include/boost/archive/detail/interface_oarchive.hpp | 2 +- + include/boost/archive/polymorphic_iarchive.hpp | 4 ++-- + include/boost/archive/polymorphic_oarchive.hpp | 4 ++-- + include/boost/archive/xml_archive_exception.hpp | 2 ++ + src/archive_exception.cpp | 1 + + src/xml_archive_exception.cpp | 12 ++++++++++++ + 6 files changed, 20 insertions(+), 5 deletions(-) + +diff --git a/include/boost/archive/detail/interface_oarchive.hpp b/include/boost/archive/detail/interface_oarchive.hpp +index 187013b..ad067f8 100644 +--- a/boost/archive/detail/interface_oarchive.hpp ++++ b/boost/archive/detail/interface_oarchive.hpp +@@ -29,7 +29,7 @@ namespace boost { + namespace archive { + namespace detail { + +-class BOOST_ARCHIVE_OR_WARCHIVE_DECL basic_pointer_oserializer; ++class BOOST_SYMBOL_VISIBLE basic_pointer_oserializer; + + template + class interface_oarchive +diff --git a/include/boost/archive/polymorphic_iarchive.hpp b/include/boost/archive/polymorphic_iarchive.hpp +index 7f19410..57fda71 100644 +--- a/boost/archive/polymorphic_iarchive.hpp ++++ b/boost/archive/polymorphic_iarchive.hpp +@@ -43,8 +43,8 @@ namespace serialization { + } // namespace serialization + namespace archive { + namespace detail { +- class BOOST_ARCHIVE_DECL basic_iarchive; +- class BOOST_ARCHIVE_DECL basic_iarchive; ++ class BOOST_SYMBOL_VISIBLE basic_iarchive; ++ class BOOST_SYMBOL_VISIBLE basic_iserializer; + } + + class polymorphic_iarchive; +diff --git a/include/boost/archive/polymorphic_oarchive.hpp b/include/boost/archive/polymorphic_oarchive.hpp +index aa30b2a..bf543b0 100644 +--- a/boost/archive/polymorphic_oarchive.hpp ++++ b/boost/archive/polymorphic_oarchive.hpp +@@ -42,8 +42,8 @@ namespace serialization { + } // namespace serialization + namespace archive { + namespace detail { +- class BOOST_ARCHIVE_DECL basic_oarchive; +- class BOOST_ARCHIVE_DECL basic_oserializer; ++ class BOOST_SYMBOL_VISIBLE basic_oarchive; ++ class BOOST_SYMBOL_VISIBLE basic_oserializer; + } + + class polymorphic_oarchive; +diff --git a/include/boost/archive/xml_archive_exception.hpp b/include/boost/archive/xml_archive_exception.hpp +index b07f9a0..45e4731 100644 +--- a/boost/archive/xml_archive_exception.hpp ++++ b/boost/archive/xml_archive_exception.hpp +@@ -45,6 +45,8 @@ class BOOST_SYMBOL_VISIBLE xml_archive_exception : + const char * e1 = NULL, + const char * e2 = NULL + ); ++ BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; ++ BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; + }; + + }// namespace archive +diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp +index 94aae50..5ff4b5f 100644 +--- a/libs/serialization/src/archive_exception.cpp ++++ b/libs/serialization/src/archive_exception.cpp +@@ -114,6 +114,7 @@ archive_exception::archive_exception( + + BOOST_ARCHIVE_DECL + archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT : ++ std::exception(oth), + code(oth.code) + { + std::memcpy(m_buffer,oth.m_buffer,sizeof m_buffer); +diff --git a/src/xml_archive_exception.cpp b/src/xml_archive_exception.cpp +index c1431e2..37144d3 100644 +--- a/libs/serialization/src/xml_archive_exception.cpp ++++ b/libs/serialization/src/xml_archive_exception.cpp +@@ -51,6 +51,18 @@ xml_archive_exception::xml_archive_exception( + break; + } + } ++ ++BOOST_ARCHIVE_DECL ++xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) : ++ archive_exception(oth) ++ { ++ } ++ ++BOOST_ARCHIVE_DECL const char * ++xml_archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW ++ { ++ return archive_exception::what(); ++ } + + } // archive + } // boost + +From 1f769b8cd914fceb981fe6a15309e1e5e5b67958 Mon Sep 17 00:00:00 2001 +From: Edward Diener +Date: Sun, 2 Aug 2015 17:48:11 -0400 +Subject: [PATCH 5/5] Backed out some unnecessary changes for the build. The + main change is the exporting/importing of the destructor, which does nothing, + for xml_archive_exception. + +--- + include/boost/archive/detail/interface_oarchive.hpp | 2 +- + include/boost/archive/polymorphic_iarchive.hpp | 4 ++-- + include/boost/archive/polymorphic_oarchive.hpp | 4 ++-- + include/boost/archive/xml_archive_exception.hpp | 2 +- + src/xml_archive_exception.cpp | 6 +----- + 5 files changed, 7 insertions(+), 11 deletions(-) + +diff --git a/include/boost/archive/detail/interface_oarchive.hpp b/include/boost/archive/detail/interface_oarchive.hpp +index ad067f8..187013b 100644 +--- a/boost/archive/detail/interface_oarchive.hpp ++++ b/boost/archive/detail/interface_oarchive.hpp +@@ -29,7 +29,7 @@ namespace boost { + namespace archive { + namespace detail { + +-class BOOST_SYMBOL_VISIBLE basic_pointer_oserializer; ++class BOOST_ARCHIVE_OR_WARCHIVE_DECL basic_pointer_oserializer; + + template + class interface_oarchive +diff --git a/include/boost/archive/polymorphic_iarchive.hpp b/include/boost/archive/polymorphic_iarchive.hpp +index 57fda71..b465bb1 100644 +--- a/boost/archive/polymorphic_iarchive.hpp ++++ b/boost/archive/polymorphic_iarchive.hpp +@@ -43,8 +43,8 @@ namespace serialization { + } // namespace serialization + namespace archive { + namespace detail { +- class BOOST_SYMBOL_VISIBLE basic_iarchive; +- class BOOST_SYMBOL_VISIBLE basic_iserializer; ++ class BOOST_ARCHIVE_DECL basic_iarchive; ++ class BOOST_ARCHIVE_DECL basic_iserializer; + } + + class polymorphic_iarchive; +diff --git a/include/boost/archive/polymorphic_oarchive.hpp b/include/boost/archive/polymorphic_oarchive.hpp +index bf543b0..aa30b2a 100644 +--- a/boost/archive/polymorphic_oarchive.hpp ++++ b/boost/archive/polymorphic_oarchive.hpp +@@ -42,8 +42,8 @@ namespace serialization { + } // namespace serialization + namespace archive { + namespace detail { +- class BOOST_SYMBOL_VISIBLE basic_oarchive; +- class BOOST_SYMBOL_VISIBLE basic_oserializer; ++ class BOOST_ARCHIVE_DECL basic_oarchive; ++ class BOOST_ARCHIVE_DECL basic_oserializer; + } + + class polymorphic_oarchive; +diff --git a/include/boost/archive/xml_archive_exception.hpp b/include/boost/archive/xml_archive_exception.hpp +index 45e4731..82c53ef 100644 +--- a/boost/archive/xml_archive_exception.hpp ++++ b/boost/archive/xml_archive_exception.hpp +@@ -46,7 +46,7 @@ class BOOST_SYMBOL_VISIBLE xml_archive_exception : + const char * e2 = NULL + ); + BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; +- BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; ++ virtual BOOST_ARCHIVE_DECL ~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; + }; + + }// namespace archive +diff --git a/src/xml_archive_exception.cpp b/src/xml_archive_exception.cpp +index 37144d3..f4bf896 100644 +--- a/libs/serialization/src/xml_archive_exception.cpp ++++ b/libs/serialization/src/xml_archive_exception.cpp +@@ -58,11 +58,7 @@ xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) + { + } + +-BOOST_ARCHIVE_DECL const char * +-xml_archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW +- { +- return archive_exception::what(); +- } ++BOOST_ARCHIVE_DECL xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} + + } // archive + } // boost diff --git a/crossmingw32-boost.spec b/crossmingw32-boost.spec index 8e090b1..a379feb 100644 --- a/crossmingw32-boost.spec +++ b/crossmingw32-boost.spec @@ -6,13 +6,16 @@ Summary: The Boost C++ Libraries - MinGW32 cross version Summary(pl.UTF-8): Biblioteki C++ "Boost" - wersja skrośna dla MinGW32 Name: crossmingw32-%{realname} -Version: 1.55.0 +Version: 1.59.0 %define fver %(echo %{version} | tr . _) Release: 1 License: Boost Software License and others Group: Development/Libraries Source0: http://downloads.sourceforge.net/boost/%{realname}_%{fver}.tar.bz2 -# Source0-md5: d6eef4b4cacb2183f2bf265a5a03a354 +# Source0-md5: 6aa9a5c6a4ca1016edd0ed1178e3cb87 +# https://github.com/boostorg/serialization/pull/19.patch +Patch0: boost-windows-decl.patch +Patch1: boost-context-mingw.patch URL: http://www.boost.org/ BuildRequires: crossmingw32-bzip2 BuildRequires: crossmingw32-gcc-c++ @@ -46,7 +49,7 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define filterout_c -f[-a-z0-9=]* %define filterout_cxx -f[-a-z0-9=]* -%define abi_tag 1_55 +%define abi_tag 1_59 %description The Boost web site provides free peer-reviewed portable C++ source @@ -94,14 +97,16 @@ Boost - biblioteki DLL dla Windows. %prep %setup -q -n %{realname}_%{fver} +%patch0 -p1 +%patch1 -p0 echo 'using gcc : : %{target}-g++ : ' \ '"%{rpmcxxflags}"' \ '%{target}-ar' \ - '%{target}-windres ;' >tools/build/v2/user-config.jam + '%{target}-windres ;' >tools/build/src/user-config.jam # use Windows Message Compiler, not Midnight Commander -%{__sed} -i -e 's,mc $(MCFLAGS),%{target}-windmc $(MCFLAGS),' tools/build/v2/tools/mc.jam +%{__sed} -i -e 's,mc $(MCFLAGS),%{target}-windmc $(MCFLAGS),' tools/build/src/tools/mc.jam %build ./bootstrap.sh --prefix=%{_prefix} @@ -110,9 +115,11 @@ echo 'using gcc : : %{target}-g++ : ' \ %{_smp_mflags} \ -sBZIP2_BINARY=bzip2 \ --layout=versioned \ - %{!?with_context:--without-context --without-coroutine} \ + %{!?with_context:--without-context --without-coroutine --without-coroutine2} \ --without-python \ --without-test \ + abi=ms \ + binary-format=pe \ debug-symbols=on \ inlining=on \ link=static,shared \ @@ -142,6 +149,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %{_libdir}/libboost_atomic-mgw*-mt-%{abi_tag}.dll.a %{_libdir}/libboost_chrono-mgw*-mt-%{abi_tag}.dll.a +%{_libdir}/libboost_container-mgw*-mt-%{abi_tag}.dll.a %{?with_context:%{_libdir}/libboost_context-mgw*-mt-%{abi_tag}.dll.a} %{?with_context:%{_libdir}/libboost_coroutine-mgw*-mt-%{abi_tag}.dll.a} %{_libdir}/libboost_date_time-mgw*-mt-%{abi_tag}.dll.a @@ -175,6 +183,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %{_libdir}/libboost_atomic-mgw*-mt-%{abi_tag}.a %{_libdir}/libboost_chrono-mgw*-mt-%{abi_tag}.a +%{_libdir}/libboost_container-mgw*-mt-%{abi_tag}.a %{?with_context:%{_libdir}/libboost_context-mgw*-mt-%{abi_tag}.a} %{?with_context:%{_libdir}/libboost_coroutine-mgw*-mt-%{abi_tag}.a} %{_libdir}/libboost_date_time-mgw*-mt-%{abi_tag}.a @@ -205,8 +214,9 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %{_dlldir}/libboost_atomic-mgw*-mt-%{abi_tag}.dll %{_dlldir}/libboost_chrono-mgw*-mt-%{abi_tag}.dll -%{?with_context:%{_libdir}/libboost_context-mgw*-mt-%{abi_tag}.dll} -%{?with_context:%{_libdir}/libboost_coroutine-mgw*-mt-%{abi_tag}.dll} +%{_dlldir}/libboost_container-mgw*-mt-%{abi_tag}.dll +%{?with_context:%{_dlldir}/libboost_context-mgw*-mt-%{abi_tag}.dll} +%{?with_context:%{_dlldir}/libboost_coroutine-mgw*-mt-%{abi_tag}.dll} %{_dlldir}/libboost_date_time-mgw*-mt-%{abi_tag}.dll %{_dlldir}/libboost_filesystem-mgw*-mt-%{abi_tag}.dll %{_dlldir}/libboost_graph-mgw*-mt-%{abi_tag}.dll -- 2.43.0