From owner-svn-ports-head@FreeBSD.ORG Wed Sep 18 23:30:32 2013 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 93068511; Wed, 18 Sep 2013 23:30:32 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 724DE2D18; Wed, 18 Sep 2013 23:30:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r8INUWR7033054; Wed, 18 Sep 2013 23:30:32 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r8INUVUo033050; Wed, 18 Sep 2013 23:30:31 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201309182330.r8INUVUo033050@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 18 Sep 2013 23:30:31 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r327589 - in head/editors/libreoffice: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Sep 2013 23:30:32 -0000 Author: jkim Date: Wed Sep 18 23:30:31 2013 New Revision: 327589 URL: http://svnweb.freebsd.org/changeset/ports/327589 Log: - Fix build on head with clang and libc++/libcxxrt. Note the patches were heavily inspired by several upstream patches and a crucial hint from tijl. - Remove a redundant compiler flag for MDDS. The GXX_INCLUDE_PATH variable was removed with STLport support and it seems it is not necessary any more. - Add an upstream patch. It may work around a potential compiler problem. - Convert to new LIB_DEPENDS format. Added: head/editors/libreoffice/files/extra-patch-libc++ (contents, props changed) head/editors/libreoffice/files/patch-bridges__source__cpp_uno__gcc3_linux_x86-64__callvirtualmethod.cxx (contents, props changed) Modified: head/editors/libreoffice/Makefile head/editors/libreoffice/files/patch-configure.ac Modified: head/editors/libreoffice/Makefile ============================================================================== --- head/editors/libreoffice/Makefile Wed Sep 18 23:20:50 2013 (r327588) +++ head/editors/libreoffice/Makefile Wed Sep 18 23:30:31 2013 (r327589) @@ -20,34 +20,34 @@ BUILD_DEPENDS= p5-Archive-Zip>=0:${PORTS bash:${PORTSDIR}/shells/bash \ gsed:${PORTSDIR}/textproc/gsed -LIB_DEPENDS= icutu:${PORTSDIR}/devel/icu \ - langtag:${PORTSDIR}/devel/liblangtag \ - orcus-0.6:${PORTSDIR}/devel/liborcus \ - curl:${PORTSDIR}/ftp/curl \ - cairo.2:${PORTSDIR}/graphics/cairo \ - graphite2:${PORTSDIR}/graphics/graphite2 \ - jpeg.11:${PORTSDIR}/graphics/jpeg \ - cdr:${PORTSDIR}/graphics/libcdr \ - lcms2:${PORTSDIR}/graphics/lcms2 \ - wpg-0.2.2:${PORTSDIR}/graphics/libwpg \ - png15:${PORTSDIR}/graphics/png \ - poppler:${PORTSDIR}/graphics/poppler \ - lpsolve55:${PORTSDIR}/math/lp_solve \ - cmis-0.4:${PORTSDIR}/net/libcmis \ - mspub-0.0:${PORTSDIR}/print/libmspub \ - nss3.1:${PORTSDIR}/security/nss \ - clucene-core:${PORTSDIR}/textproc/clucene \ - expat.6:${PORTSDIR}/textproc/expat2 \ - hunspell-1.3.0:${PORTSDIR}/textproc/hunspell \ - hyphen.2:${PORTSDIR}/textproc/hyphen \ - exttextcat-2.0.0:${PORTSDIR}/textproc/libexttextcat \ - visio-0.0.0:${PORTSDIR}/textproc/libvisio \ - xml2.5:${PORTSDIR}/textproc/libxml2 \ - xslt.2:${PORTSDIR}/textproc/libxslt \ - wpd-0.9.9:${PORTSDIR}/textproc/libwpd \ - wps-0.2.2:${PORTSDIR}/textproc/libwps \ - mythes-1.2.0:${PORTSDIR}/textproc/mythes \ - rdf.0:${PORTSDIR}/textproc/redland +LIB_DEPENDS= libicutu.so:${PORTSDIR}/devel/icu \ + liblangtag.so:${PORTSDIR}/devel/liblangtag \ + liborcus-0.6.so:${PORTSDIR}/devel/liborcus \ + libcurl.so:${PORTSDIR}/ftp/curl \ + libcairo.so:${PORTSDIR}/graphics/cairo \ + libgraphite2.so:${PORTSDIR}/graphics/graphite2 \ + libjpeg.so:${PORTSDIR}/graphics/jpeg \ + libcdr-0.0.so:${PORTSDIR}/graphics/libcdr \ + liblcms2.so:${PORTSDIR}/graphics/lcms2 \ + libwpg-0.2.so:${PORTSDIR}/graphics/libwpg \ + libpng15.so:${PORTSDIR}/graphics/png \ + libpoppler.so:${PORTSDIR}/graphics/poppler \ + liblpsolve55.so:${PORTSDIR}/math/lp_solve \ + libcmis-0.4.so:${PORTSDIR}/net/libcmis \ + libmspub-0.0.so:${PORTSDIR}/print/libmspub \ + libnss3.so:${PORTSDIR}/security/nss \ + libclucene-core.so:${PORTSDIR}/textproc/clucene \ + libexpat.so:${PORTSDIR}/textproc/expat2 \ + libhunspell-1.3.so:${PORTSDIR}/textproc/hunspell \ + libhyphen.so:${PORTSDIR}/textproc/hyphen \ + libexttextcat-2.0.so:${PORTSDIR}/textproc/libexttextcat \ + libvisio-0.0.so:${PORTSDIR}/textproc/libvisio \ + libxml2.so:${PORTSDIR}/textproc/libxml2 \ + libxslt.so:${PORTSDIR}/textproc/libxslt \ + libwpd-0.9.so:${PORTSDIR}/textproc/libwpd \ + libwps-0.2.so:${PORTSDIR}/textproc/libwps \ + libmythes-1.2.so:${PORTSDIR}/textproc/mythes \ + librdf.so:${PORTSDIR}/textproc/redland RUN_DEPENDS= ${LOCALBASE}/lib/X11/fonts/dejavu/DejaVuSans.ttf:${PORTSDIR}/x11-fonts/dejavu \ ${LOCALBASE}/lib/X11/fonts/GentiumBasic/GenBasI.ttf:${PORTSDIR}/x11-fonts/gentium-basic \ @@ -187,7 +187,7 @@ WEBDAV_DESC= Enable webdav protocol .include .if ${PORT_OPTIONS:MCUPS} -LIB_DEPENDS+= cups:${PORTSDIR}/print/cups-client +LIB_DEPENDS+= libcups.so:${PORTSDIR}/print/cups-client CONFIGURE_ARGS+= --enable-cups --without-ppds .else CONFIGURE_ARGS+= --disable-cups @@ -204,7 +204,7 @@ CONFIGURE_ARGS+= --enable-release-build .endif .if ${PORT_OPTIONS:MGNOME} -LIB_DEPENDS+= dbus-glib-1:${PORTSDIR}/devel/dbus-glib +LIB_DEPENDS+= libdbus-glib-1.so:${PORTSDIR}/devel/dbus-glib USE_GNOME+= gconf2 CONFIGURE_ARGS+= --enable-dbus --enable-gconf --enable-gio \ --enable-lockdown @@ -327,7 +327,7 @@ CONFIGURE_ARGS+= --disable-cve-tests .if ${PORT_OPTIONS:MWEBDAV} CONFIGURE_ARGS+= --enable-neon --with-system-neon -LIB_DEPENDS+= neon.27:${PORTSDIR}/www/neon29 +LIB_DEPENDS+= libneon.so:${PORTSDIR}/www/neon29 .else CONFIGURE_ARGS+= --disable-neon .endif @@ -343,6 +343,9 @@ CC= /usr/bin/clang CPP= /usr/bin/clang-cpp CXX= /usr/bin/clang++ CONFIGURE_ENV+= CXXCPP="${CPP}" +.if ${OSVERSION} > 100054 +EXTRA_PATCHES+= ${FILESDIR}/extra-patch-libc++ +.endif .else # XXX Clang PR13308 (http://llvm.org/bugs/show_bug.cgi?id=13308) BUILD_DEPENDS+= clang>=3.2_4:${PORTSDIR}/lang/clang Added: head/editors/libreoffice/files/extra-patch-libc++ ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/editors/libreoffice/files/extra-patch-libc++ Wed Sep 18 23:30:31 2013 (r327589) @@ -0,0 +1,495 @@ +--- configure.ac.orig 2013-08-13 16:11:48.000000000 -0400 ++++ configure.ac 2013-09-13 17:50:41.000000000 -0400 +@@ -5518,7 +5518,7 @@ + CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS" + fi + +- if test "$HAVE_GCC_VISIBILITY_FEATURE" = "TRUE"; then ++ if test "$HAVE_GCC_VISIBILITY_FEATURE" = "TRUE" -a "$COM_GCC_IS_CLANG" != "TRUE"; then + dnl gcc#19664, gcc#22482, rhbz#162935 + AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)]) + AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no) +--- binaryurp/source/cache.hxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ binaryurp/source/cache.hxx 2013-09-13 18:14:53.000000000 -0400 +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + #include "boost/noncopyable.hpp" + #include "sal/types.h" +@@ -37,88 +38,57 @@ + + } + +-template< typename T > class Cache: private boost::noncopyable { ++template< typename T > class Cache : private boost::noncopyable { + public: ++ typedef sal_uInt16 IdxType; ++ + explicit Cache(std::size_t size): +- size_(size), first_(map_.end()), last_(map_.end()) ++ size_(size) + { + assert(size < cache::ignore); + } + +- sal_uInt16 add(T const & content, bool * found) { +- assert(found != 0); +- typename Map::iterator i(map_.find(content)); +- *found = i != map_.end(); +- if (i == map_.end()) { +- typename Map::size_type n = map_.size(); +- if (n < size_) { +- i = +- (map_.insert( +- typename Map::value_type( +- content, +- Entry( +- static_cast< sal_uInt16 >(n), map_.end(), +- first_)))). +- first; +- if (first_ == map_.end()) { +- last_ = i; +- } else { +- first_->second.prev = i; +- } +- first_ = i; +- } else if (last_ != map_.end()) { +- i = +- (map_.insert( +- typename Map::value_type( +- content, +- Entry(last_->second.index, map_.end(), first_)))). +- first; +- first_->second.prev = i; +- first_ = i; +- typename Map::iterator j(last_); +- last_ = last_->second.prev; +- last_->second.next = map_.end(); +- map_.erase(j); +- } else { +- // Reached iff size_ == 0: +- return cache::ignore; +- } +- } else if (i != first_) { +- // Move to front (reached only if size_ > 1): +- i->second.prev->second.next = i->second.next; +- if (i->second.next == map_.end()) { +- last_ = i->second.prev; +- } else { +- i->second.next->second.prev = i->second.prev; +- } +- i->second.prev = map_.end(); +- i->second.next = first_; +- first_->second.prev = i; +- first_ = i; +- } +- return i->second.index; ++ IdxType add( const T& rContent, bool* pbFound) { ++ assert( pbFound != NULL); ++ if( !size_) { ++ *pbFound = false; ++ return cache::ignore; ++ } ++ // try to insert into the map ++ list_.push_front( rContent); // create a temp entry ++ typedef std::pair MappedType; ++ typedef std::pair MapPair; ++ MapPair aMP = map_.insert( MappedType( list_.begin(), 0)); ++ *pbFound = !aMP.second; ++ ++ if( !aMP.second) { // insertion not needed => found the entry ++ list_.pop_front(); // remove the temp entry ++ list_.splice( list_.begin(), list_, aMP.first->first); // the found entry is moved to front ++ return aMP.first->second; ++ } ++ ++ // test insertion successful => it was new so we keep it ++ IdxType n = static_cast( map_.size() - 1); ++ if( n >= size_) { // cache full => replace the LRU entry ++ // find the least recently used element in the map ++ typename LruItMap::iterator it = map_.find( --list_.end()); ++ n = it->second; ++ map_.erase( it); // remove it from the map ++ list_.pop_back(); // remove from the list ++ } ++ aMP.first->second = n; ++ return n; + } + + private: +- struct Entry; +- +- typedef std::map< T, Entry > Map; +- +- struct Entry { +- sal_uInt16 index; +- typename Map::iterator prev; +- typename Map::iterator next; +- +- Entry( +- sal_uInt16 theIndex, typename Map::iterator thePrev, +- typename Map::iterator theNext): +- index(theIndex), prev(thePrev), next(theNext) {} +- }; ++ typedef std::list LruList; // last recently used list ++ typedef typename LruList::iterator LruListIt; ++ struct CmpT{ bool operator()( const LruListIt& rA, const LruListIt& rB) const { return (*rA<*rB);}}; ++ typedef ::std::map< LruListIt, IdxType, CmpT > LruItMap; // a map into a LruList + + std::size_t size_; +- Map map_; +- typename Map::iterator first_; +- typename Map::iterator last_; ++ LruItMap map_; ++ LruList list_; + }; + + } +--- binaryurp/source/lessoperators.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ binaryurp/source/lessoperators.cxx 2013-09-13 18:15:58.000000000 -0400 +@@ -38,8 +38,30 @@ + typelib_TypeClass tc2 = right.get()->eTypeClass; + return tc1 < tc2 || + (tc1 == tc2 && +- (OUString(left.get()->pTypeName) < +- OUString(right.get()->pTypeName))); ++ (OUString::unacquired(&left.get()->pTypeName) < ++ OUString::unacquired(&right.get()->pTypeName))); ++} ++ ++bool TypeDescEqual::operator()( const TypeDescription& rLeft, const TypeDescription& rRight) const ++{ ++ assert( rLeft.is() && rRight.is()); ++ const typelib_TypeDescription& rA = *rLeft.get(); ++ const typelib_TypeDescription& rB = *rRight.get(); ++ if( rA.eTypeClass != rB.eTypeClass) ++ return false; ++ const sal_Int32 nCmp = rtl_ustr_compare_WithLength( ++ rA.pTypeName->buffer, rA.pTypeName->length, ++ rB.pTypeName->buffer, rB.pTypeName->length); ++ return (nCmp == 0); ++} ++ ++sal_Int32 TypeDescHash::operator()( const TypeDescription& rTD) const ++{ ++ assert( rTD.is()); ++ const typelib_TypeDescription& rA = *rTD.get(); ++ sal_Int32 h = rtl_ustr_hashCode_WithLength( rA.pTypeName->buffer, rA.pTypeName->length); ++ h ^= static_cast(rA.eTypeClass); ++ return h; + } + + } } } } +@@ -47,8 +69,8 @@ + namespace rtl { + + bool operator <(ByteSequence const & left, ByteSequence const & right) { +- for (sal_Int32 i = 0; i != std::min(left.getLength(), right.getLength()); +- ++i) ++ const sal_Int32 nLen = std::min( left.getLength(), right.getLength()); ++ for( sal_Int32 i = 0; i < nLen; ++i ) + { + if (left[i] < right[i]) { + return true; +--- binaryurp/source/lessoperators.hxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ binaryurp/source/lessoperators.hxx 2013-09-13 18:14:53.000000000 -0400 +@@ -31,6 +31,10 @@ + + bool operator <(TypeDescription const & left, TypeDescription const & right); + ++struct TypeDescHash { sal_Int32 operator()( const TypeDescription&) const; }; ++ ++struct TypeDescEqual { bool operator()( const TypeDescription&, const TypeDescription&) const; }; ++ + } } } } + + namespace rtl { +--- bridges/source/cpp_uno/gcc3_linux_intel/except.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_intel/except.cxx 2013-09-18 13:06:42.000000000 -0400 +@@ -22,11 +22,6 @@ + #include + #include + +-#include +-#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h +-#define _GLIBCXX_CDTOR_CALLABI +-#endif +- + #include + #include + #include +@@ -248,7 +243,11 @@ + Reference< XInterface >() ); + } + ++#ifdef _LIBCPP_VERSION ++ pCppExc = __cxxabiv1::__cxa_allocate_exception( pTypeDescr->nSize ); ++#else + pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); ++#endif + ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); + + // destruct uno exception +@@ -280,7 +279,11 @@ + } + } + ++#ifdef _LIBCPP_VERSION ++ __cxxabiv1::__cxa_throw( pCppExc, rtti, deleteException ); ++#else + __cxa_throw( pCppExc, rtti, deleteException ); ++#endif + } + + //================================================================================================== +--- bridges/source/cpp_uno/gcc3_linux_intel/share.hxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_intel/share.hxx 2013-09-18 13:06:17.000000000 -0400 +@@ -25,6 +25,37 @@ + + #include + ++#include ++#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h ++#define _GLIBCXX_CDTOR_CALLABI ++#endif ++ ++#ifdef _LIBCPP_VERSION ++ ++namespace __cxxabiv1 ++{ ++ struct __class_type_info : public std::type_info ++ { ++ explicit __class_type_info( const char *__n ) : type_info( __n ) { } ++ virtual ~__class_type_info(); ++ }; ++ ++ struct __si_class_type_info : public __class_type_info ++ { ++ explicit __si_class_type_info( const char *__n, const __class_type_info *__b ) : ++ __class_type_info( __n ), __base_type( __b ) { } ++ virtual ~__si_class_type_info(); ++ const __class_type_info *__base_type; ++ }; ++ ++extern "C" void *__cxa_allocate_exception( std::size_t thrown_size ) _NOEXCEPT; ++ ++extern "C" _LIBCPP_NORETURN void __cxa_throw( ++ void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ); ++} ++ ++#else ++ + namespace CPPU_CURRENT_NAMESPACE + { + +@@ -86,6 +117,13 @@ + void *thrown_exception, void *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); + #endif + ++} ++ ++#endif ++ ++namespace CPPU_CURRENT_NAMESPACE ++{ ++ + // ----- + + //================================================================================================== +@@ -93,8 +132,11 @@ + uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); + //================================================================================================== + void fillUnoException( ++#ifdef _LIBCPP_VERSION ++ __cxxabiv1::__cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); ++#else + __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); +- ++#endif + } + + namespace x86 +--- bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx 2013-09-18 13:05:25.000000000 -0400 +@@ -203,7 +203,11 @@ + catch (...) + { + // fill uno exception ++#ifdef _LIBCPP_VERSION ++ CPPU_CURRENT_NAMESPACE::fillUnoException( __cxxabiv1::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); ++#else + fillUnoException( __cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); ++#endif + + // temporary params + for ( ; nTempIndizes--; ) +--- bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx 2013-09-18 12:55:37.000000000 -0400 +@@ -22,11 +22,6 @@ + #include + #include + +-#include +-#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h +-#define _GLIBCXX_CDTOR_CALLABI +-#endif +- + #include + + #include +@@ -255,7 +250,11 @@ + Reference< XInterface >() ); + } + ++#ifdef _LIBCPP_VERSION ++ pCppExc = __cxxabiv1::__cxa_allocate_exception( pTypeDescr->nSize ); ++#else + pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); ++#endif + ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); + + // destruct uno exception +@@ -274,7 +273,11 @@ + } + } + ++#ifdef _LIBCPP_VERSION ++ __cxxabiv1::__cxa_throw( pCppExc, rtti, deleteException ); ++#else + __cxa_throw( pCppExc, rtti, deleteException ); ++#endif + } + + //================================================================================================== +--- bridges/source/cpp_uno/gcc3_linux_x86-64/share.hxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_x86-64/share.hxx 2013-09-18 12:53:27.000000000 -0400 +@@ -23,6 +23,37 @@ + #include + #include + ++#include ++#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h ++#define _GLIBCXX_CDTOR_CALLABI ++#endif ++ ++#ifdef _LIBCPP_VERSION ++ ++namespace __cxxabiv1 ++{ ++ struct __class_type_info : public std::type_info ++ { ++ explicit __class_type_info( const char *__n ) : type_info( __n ) { } ++ virtual ~__class_type_info(); ++ }; ++ ++ struct __si_class_type_info : public __class_type_info ++ { ++ explicit __si_class_type_info( const char *__n, const __class_type_info *__b ) : ++ __class_type_info( __n ), __base_type( __b ) { } ++ virtual ~__si_class_type_info(); ++ const __class_type_info *__base_type; ++ }; ++ ++extern "C" void *__cxa_allocate_exception( std::size_t thrown_size ) _NOEXCEPT; ++ ++extern "C" _LIBCPP_NORETURN void __cxa_throw( ++ void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ); ++} ++ ++#else ++ + namespace CPPU_CURRENT_NAMESPACE + { + +@@ -82,6 +113,13 @@ + void *thrown_exception, void *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); + #endif + ++} ++ ++#endif ++ ++namespace CPPU_CURRENT_NAMESPACE ++{ ++ + // ----- + + //================================================================================================== +@@ -89,7 +128,11 @@ + uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); + //================================================================================================== + void fillUnoException( ++#ifdef _LIBCPP_VERSION ++ __cxxabiv1::__cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); ++#else + __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); ++#endif + } + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +--- bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx 2013-09-18 12:58:22.000000000 -0400 +@@ -291,7 +291,11 @@ + catch (...) + { + // fill uno exception ++#ifdef _LIBCPP_VERSION ++ CPPU_CURRENT_NAMESPACE::fillUnoException( __cxxabiv1::__cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); ++#else + fillUnoException( __cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); ++#endif + + // temporary params + for ( ; nTempIndizes--; ) +--- sal/inc/rtl/allocator.hxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ sal/inc/rtl/allocator.hxx 2013-09-12 16:56:43.000000000 -0400 +@@ -125,7 +125,7 @@ + } + + //----------------------------------------- +-#if defined HAVE_CXX11_PERFECT_FORWARDING ++#if defined(HAVE_CXX11_PERFECT_FORWARDING) && !defined(_LIBCPP_VERSION) + template< typename... Args > + void construct (pointer p, Args &&... value) + { +--- sal/inc/sal/log.hxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ sal/inc/sal/log.hxx 2013-09-13 05:27:31.000000000 -0400 +@@ -177,9 +177,13 @@ + + @since LibreOffice 3.5 + */ ++#ifdef _LIBCPP_VERSION + #define SAL_STREAM(stream) \ +- (dynamic_cast< ::std::ostringstream & >(::std::ostringstream() << stream). \ +- str()) ++ (::std::ostringstream() << stream).str() ++#else ++#define SAL_STREAM(stream) \ ++ (dynamic_cast< ::std::ostringstream & >(::std::ostringstream() << stream).str()) ++#endif + + /** + @page sal_log Basic logging functionality. +--- slideshow/source/engine/activities/activitiesfactory.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ slideshow/source/engine/activities/activitiesfactory.cxx 2013-09-13 05:47:27.000000000 -0400 +@@ -557,7 +557,7 @@ + // interpolate between nIndex and nIndex+1 values + (*mpAnim)( + getPresentationValue( +- accumulate( maValues.back(), ++ accumulate( maValues.back(), + mbCumulative ? nRepeatCount : 0, + maInterpolator( maValues[ nIndex ], + maValues[ nIndex+1 ], +@@ -577,7 +577,7 @@ + // this is discrete, thus no lerp here. + (*mpAnim)( + getPresentationValue( +- accumulate( maValues.back(), ++ accumulate( maValues.back(), + mbCumulative ? nRepeatCount : 0, + maValues[ nFrame ] ) ) ); + } Added: head/editors/libreoffice/files/patch-bridges__source__cpp_uno__gcc3_linux_x86-64__callvirtualmethod.cxx ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/editors/libreoffice/files/patch-bridges__source__cpp_uno__gcc3_linux_x86-64__callvirtualmethod.cxx Wed Sep 18 23:30:31 2013 (r327589) @@ -0,0 +1,26 @@ +--- bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx.orig 2013-08-13 16:11:48.000000000 -0400 ++++ bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx 2013-09-17 14:52:46.000000000 -0400 +@@ -63,11 +63,12 @@ + pMethod = *((sal_uInt64 *)pMethod); + + // Load parameters to stack, if necessary ++ sal_uInt64* pCallStack = NULL; + if ( nStack ) + { + // 16-bytes aligned + sal_uInt32 nStackBytes = ( ( nStack + 1 ) >> 1 ) * 16; +- sal_uInt64 *pCallStack = (sal_uInt64 *) __builtin_alloca( nStackBytes ); ++ pCallStack = (sal_uInt64 *) __builtin_alloca( nStackBytes ); + std::memcpy( pCallStack, pStack, nStackBytes ); + } + +@@ -112,7 +113,8 @@ + "movsd %%xmm0, %2\n\t" + "movsd %%xmm1, %3\n\t" + : "=m" ( rax ), "=m" ( rdx ), "=m" ( xmm0 ), "=m" ( xmm1 ) +- : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ) ++ : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ), ++ "m" ( pCallStack ) // dummy input to prevent the compiler from optimizing the alloca out + : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r10", "r11", + "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", + "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15" Modified: head/editors/libreoffice/files/patch-configure.ac ============================================================================== --- head/editors/libreoffice/files/patch-configure.ac Wed Sep 18 23:20:50 2013 (r327588) +++ head/editors/libreoffice/files/patch-configure.ac Wed Sep 18 23:30:31 2013 (r327589) @@ -1,5 +1,5 @@ --- configure.ac.orig 2013-08-13 16:11:48.000000000 -0400 -+++ configure.ac 2013-08-16 18:17:08.000000000 -0400 ++++ configure.ac 2013-09-13 17:50:41.000000000 -0400 @@ -3637,7 +3637,7 @@ PLATFORMID=freebsd_x86 OUTPATH=unxfbsdi @@ -43,22 +43,7 @@ else AC_MSG_RESULT([internal]) SYSTEM_LIBCMIS=NO -@@ -7929,9 +7921,13 @@ - AC_MSG_CHECKING([which hash container mdds shall use]) - if test "x$HAVE_CXX0X" = "xTRUE"; then - MDDS_CPPFLAGS="-std=gnu++0x" -+ else -+ MDDS_CPPFLAGS="-std=gnu++98" -+ fi -+ if test "x`basename $GXX_INCLUDE_PATH 2>/dev/null`" != "x4.2"; then - AC_MSG_RESULT([std::unordered_map]) - else -- MDDS_CPPFLAGS="-DMDDS_HASH_CONTAINER_BOOST" -+ MDDS_CPPFLAGS="$MDDS_CPPFLAGS -DMDDS_HASH_CONTAINER_BOOST" - AC_MSG_RESULT([boost::unordered_map]) - fi - -@@ -8298,7 +8294,7 @@ +@@ -8298,7 +8290,7 @@ dnl =================================================================== AC_MSG_CHECKING([whether to enable graphite support]) @@ -67,7 +52,7 @@ AC_MSG_RESULT([yes]) ENABLE_GRAPHITE="TRUE" AC_MSG_CHECKING([which graphite to use]) -@@ -8550,8 +8546,8 @@ +@@ -8550,8 +8542,8 @@ AC_MSG_RESULT([external]) # Mac OS builds should get out without extra stuff is the Mac porters' # wish. And pkg-config is although Xcode ships a .pc for openssl @@ -78,7 +63,7 @@ OPENSSL_CFLAGS= OPENSSL_LIBS="-lssl -lcrypto" else -@@ -8605,7 +8601,7 @@ +@@ -8605,7 +8597,7 @@ if test "$with_system_orcus" = "yes"; then AC_MSG_RESULT([external]) SYSTEM_LIBORCUS=YES @@ -87,7 +72,7 @@ else AC_MSG_RESULT([internal]) BUILD_TYPE="$BUILD_TYPE ORCUS" -@@ -10419,10 +10415,10 @@ +@@ -10419,10 +10411,10 @@ dnl Check for Meta Object Compiler