From edb38d702dd5a058ae0702b73a43328318b94649 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Thu, 4 Jun 2015 16:09:48 +0200 Subject: [PATCH] update to liborcus 0.9.1 Includes switching to dynamic libs. Change-Id: I959c4e9430f8cf95f50d48e1b01d8323dba4af81 --- RepositoryExternal.mk | 55 +- configure.ac | 2 +- download.lst | 2 +- external/liborcus/0001-fix-dllexport-decls.patch | 101 ++ .../0001-mark-more-symbols-as-public.patch | 52 + ...ese-functions-are-implemented-in-liborcus.patch | 36 + ...1-workaround-a-linking-problem-on-windows.patch | 45 + external/liborcus/ExternalPackage_liborcus.mk | 22 + external/liborcus/ExternalProject_liborcus.mk | 4 +- external/liborcus/Library_orcus-parser.mk | 55 + external/liborcus/Library_orcus.mk | 104 ++ external/liborcus/Module_liborcus.mk | 17 +- external/liborcus/UnpackedTarball_liborcus.mk | 25 +- external/liborcus/liborcus_0.1.0-configure.patch | 20 - external/liborcus/liborcus_0.1.0-dllimport.patch | 24 - .../liborcus/liborcus_0.7.0-configure.gcc5.patch.0 | 1800 -------------------- external/liborcus/visibility.patch | 11 - sc/source/filter/html/htmlpars.cxx | 30 +- sc/source/filter/inc/orcusinterface.hxx | 10 + sc/source/filter/orcus/interface.cxx | 48 +- 20 files changed, 572 insertions(+), 1891 deletions(-) create mode 100644 external/liborcus/0001-fix-dllexport-decls.patch create mode 100644 external/liborcus/0001-mark-more-symbols-as-public.patch create mode 100644 external/liborcus/0001-these-functions-are-implemented-in-liborcus.patch create mode 100644 external/liborcus/0001-workaround-a-linking-problem-on-windows.patch create mode 100644 external/liborcus/ExternalPackage_liborcus.mk create mode 100644 external/liborcus/Library_orcus-parser.mk create mode 100644 external/liborcus/Library_orcus.mk delete mode 100644 external/liborcus/liborcus_0.1.0-configure.patch delete mode 100644 external/liborcus/liborcus_0.1.0-dllimport.patch delete mode 100644 external/liborcus/liborcus_0.7.0-configure.gcc5.patch.0 delete mode 100644 external/liborcus/visibility.patch diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 47e4d17..726ef75 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -3209,35 +3209,78 @@ endef else # !SYSTEM_LIBORCUS +ifeq ($(COM),MSC) + +$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo,\ + orcus \ + orcus-parser \ +)) + +define gb_LinkTarget__use_orcus +$(call gb_LinkTarget_set_include,$(1),\ + -I$(call gb_UnpackedTarball_get_dir,liborcus/include) \ + $$(INCLUDE) \ +) + +$(call gb_LinkTarget_use_libraries,$(1),\ + orcus \ +) + +endef + +define gb_LinkTarget__use_orcus-parser +$(call gb_LinkTarget_set_include,$(1),\ + -I$(call gb_UnpackedTarball_get_dir,liborcus/include) \ + $$(INCLUDE) \ +) + +$(call gb_LinkTarget_use_libraries,$(1),\ + orcus-parser \ +) + +endef + +else # !MSC + +$(eval $(call gb_Helper_register_packages_for_install,ooo,\ + liborcus \ +)) + define gb_LinkTarget__use_orcus -$(call gb_LinkTarget_use_external_project,$(1),liborcus) +$(call gb_LinkTarget_use_package,$(1),liborcus) + $(call gb_LinkTarget_set_include,$(1),\ -I$(call gb_UnpackedTarball_get_dir,liborcus/include) \ $$(INCLUDE) \ ) + $(call gb_LinkTarget_add_libs,$(1),\ - $(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs/liborcus-0.8$(gb_StaticLibrary_PLAINEXT) \ + -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.10 \ ) $(if $(SYSTEM_BOOST), \ - $(call gb_LinkTarget_add_ldflags,$(1),$(BOOST_LDFLAGS)) \ - $(call gb_LinkTarget_add_libs,$(1),$(BOOST_SYSTEM_LIB)) \ + $(call gb_LinkTarget_add_ldflags,$(1),$(BOOST_LDFLAGS)) \ + $(call gb_LinkTarget_add_libs,$(1),$(BOOST_SYSTEM_LIB)) \ ) endef define gb_LinkTarget__use_orcus-parser -$(call gb_LinkTarget_use_external_project,$(1),liborcus) +$(call gb_LinkTarget_use_package,$(1),liborcus) + $(call gb_LinkTarget_set_include,$(1),\ -I$(call gb_UnpackedTarball_get_dir,liborcus/include) \ $$(INCLUDE) \ ) + $(call gb_LinkTarget_add_libs,$(1),\ - $(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs/liborcus-parser-0.8$(gb_StaticLibrary_PLAINEXT) \ + -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.10 \ ) endef +endif # MSC + endif # SYSTEM_LIBORCUS else # ENABLE_ORCUS != TRUE diff --git a/configure.ac b/configure.ac index c7483a0..ac00539 100644 --- a/configure.ac +++ b/configure.ac @@ -9012,7 +9012,7 @@ if test -z "$enable_orcus" -o "$enable_orcus" != no; then ENABLE_ORCUS="TRUE" AC_DEFINE(ENABLE_ORCUS) - libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.8 >= 0.7.0]) + libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.10 >= 0.9.0]) if test "$with_system_orcus" != "yes"; then if test "$SYSTEM_BOOST" = "TRUE"; then # =========================================================== diff --git a/download.lst b/download.lst index 86ce10c..7b4bfe4 100644 --- a/download.lst +++ b/download.lst @@ -118,7 +118,7 @@ export OPENCOLLADA_TARBALL := OpenCOLLADA-master-6509aa13af.tar.bz2 export OPENLDAP_TARBALL := 804c6cb5698db30b75ad0ff1c25baefd-openldap-2.4.31.tgz export OPENSSL_MD5SUM := a06c547dac9044161a477211049f60ef export OPENSSL_TARBALL := openssl-1.0.2a.tar.gz -export ORCUS_TARBALL := 7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2 +export ORCUS_TARBALL := 18814358772ed7bb476e04b0384af082-liborcus-0.9.1.tar.gz export PAGEMAKER_MD5SUM := 795cc7a59ace4db2b12586971d668671 export PAGEMAKER_TARBALL := libpagemaker-0.0.2.tar.bz2 export PIXMAN_TARBALL := c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 diff --git a/external/liborcus/0001-fix-dllexport-decls.patch b/external/liborcus/0001-fix-dllexport-decls.patch new file mode 100644 index 0000000..75a4423 --- /dev/null +++ b/external/liborcus/0001-fix-dllexport-decls.patch @@ -0,0 +1,101 @@ +From 3e08d2264984b8d5227e22c7089f00f8f2e36513 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Tue, 2 Jun 2015 23:26:39 +0200 +Subject: [PATCH] fix dllexport decls + +--- + include/orcus/base64.hpp | 4 ++-- + include/orcus/exception.hpp | 2 +- + include/orcus/pstring.hpp | 6 +++--- + include/orcus/stream.hpp | 2 +- + include/orcus/string_pool.hpp | 2 +- + 5 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/include/orcus/base64.hpp b/include/orcus/base64.hpp +index a4cf020..0f81289 100644 +--- a/include/orcus/base64.hpp ++++ b/include/orcus/base64.hpp +@@ -22,7 +22,7 @@ namespace orcus { + * @param len_base64 length of encoded character sequence. + * @param decoded decoded byte sequence will be put into this parameter. + */ +-ORCUS_DLLPUBLIC void decode_from_base64(const char* p_base64, size_t len_base64, std::vector& decoded); ++ORCUS_PSR_DLLPUBLIC void decode_from_base64(const char* p_base64, size_t len_base64, std::vector& decoded); + + /** + * Encode a sequence of bytes into base64-encoded characters. +@@ -31,7 +31,7 @@ ORCUS_DLLPUBLIC void decode_from_base64(const char* p_base64, size_t len_base64, + * @param encoded base64-encoded character sequence representing the input + * bytes. + */ +-ORCUS_DLLPUBLIC void encode_to_base64(const std::vector& input, std::string& encoded); ++ORCUS_PSR_DLLPUBLIC void encode_to_base64(const std::vector& input, std::string& encoded); + + } + +diff --git a/include/orcus/exception.hpp b/include/orcus/exception.hpp +index 63729ae..ba6132c 100644 +--- a/include/orcus/exception.hpp ++++ b/include/orcus/exception.hpp +@@ -25,7 +25,7 @@ private: + ::std::string m_msg; + }; + +-class ORCUS_DLLPUBLIC xml_structure_error : public general_error ++class ORCUS_PSR_DLLPUBLIC xml_structure_error : public general_error + { + public: + explicit xml_structure_error(const ::std::string& msg); +diff --git a/include/orcus/pstring.hpp b/include/orcus/pstring.hpp +index e38d4be..c72b78b 100644 +--- a/include/orcus/pstring.hpp ++++ b/include/orcus/pstring.hpp +@@ -71,7 +71,7 @@ public: + m_size = 0; + } + +- struct ORCUS_DLLPUBLIC hash ++ struct ORCUS_PSR_DLLPUBLIC hash + { + size_t operator() (const pstring& val) const; + }; +@@ -86,8 +86,8 @@ inline ::std::ostream& operator<< (::std::ostream& os, const pstring& str) + return os << str.str(); + } + +-ORCUS_DLLPUBLIC std::string operator+ (const std::string& left, const pstring& right); +-ORCUS_DLLPUBLIC std::string& operator+= (std::string& left, const pstring& right); ++ORCUS_PSR_DLLPUBLIC std::string operator+ (const std::string& left, const pstring& right); ++ORCUS_PSR_DLLPUBLIC std::string& operator+= (std::string& left, const pstring& right); + + } + +diff --git a/include/orcus/stream.hpp b/include/orcus/stream.hpp +index a32f6a4..064d386 100644 +--- a/include/orcus/stream.hpp ++++ b/include/orcus/stream.hpp +@@ -20,7 +20,7 @@ namespace orcus { + * @param filepath file to open + * @param strm content of the file + */ +-ORCUS_DLLPUBLIC void load_file_content(const char* filepath, std::string& strm); ++ORCUS_PSR_DLLPUBLIC void load_file_content(const char* filepath, std::string& strm); + + } + +diff --git a/include/orcus/string_pool.hpp b/include/orcus/string_pool.hpp +index e4afa4f..b895ee4 100644 +--- a/include/orcus/string_pool.hpp ++++ b/include/orcus/string_pool.hpp +@@ -21,7 +21,7 @@ namespace orcus { + /** + * Implements string hash map. + */ +-class ORCUS_DLLPUBLIC string_pool ++class ORCUS_PSR_DLLPUBLIC string_pool + { + struct string_hash + { +-- +2.4.1 + diff --git a/external/liborcus/0001-mark-more-symbols-as-public.patch b/external/liborcus/0001-mark-more-symbols-as-public.patch new file mode 100644 index 0000000..ee9658e --- /dev/null +++ b/external/liborcus/0001-mark-more-symbols-as-public.patch @@ -0,0 +1,52 @@ +From 718b1adfe9c327e06b1ab796c5cd9805db63c9b3 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Wed, 3 Jun 2015 07:46:50 +0200 +Subject: [PATCH] mark more symbols as public + +--- + include/orcus/xml_structure_tree.hpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/include/orcus/xml_structure_tree.hpp b/include/orcus/xml_structure_tree.hpp +index 097e56c..58cabfd 100644 +--- a/include/orcus/xml_structure_tree.hpp ++++ b/include/orcus/xml_structure_tree.hpp +@@ -31,7 +31,7 @@ class ORCUS_DLLPUBLIC xml_structure_tree + + public: + +- struct entity_name ++ struct ORCUS_DLLPUBLIC entity_name + { + xmlns_id_t ns; + pstring name; +@@ -42,7 +42,7 @@ public: + bool operator< (const entity_name& r) const; + bool operator== (const entity_name& r) const; + +- struct hash ++ struct ORCUS_DLLPUBLIC hash + { + size_t operator ()(const entity_name& val) const; + }; +@@ -50,7 +50,7 @@ public: + + typedef std::vector entity_names_type; + +- struct element ++ struct ORCUS_DLLPUBLIC element + { + entity_name name; + bool repeat; +@@ -64,7 +64,7 @@ public: + /** + * This class allows client to traverse the tree. + */ +- class walker ++ class ORCUS_DLLPUBLIC walker + { + friend class xml_structure_tree; + walker_impl* mp_impl; +-- +2.4.1 + diff --git a/external/liborcus/0001-these-functions-are-implemented-in-liborcus.patch b/external/liborcus/0001-these-functions-are-implemented-in-liborcus.patch new file mode 100644 index 0000000..c027da6 --- /dev/null +++ b/external/liborcus/0001-these-functions-are-implemented-in-liborcus.patch @@ -0,0 +1,36 @@ +From 26d33d7cfd93b22e2fa13e6a3e28d133619948cf Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 4 Jun 2015 12:33:26 +0200 +Subject: [PATCH] these functions are implemented in liborcus + +--- + include/orcus/spreadsheet/types.hpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/include/orcus/spreadsheet/types.hpp b/include/orcus/spreadsheet/types.hpp +index a78340e..bec14c8 100644 +--- a/include/orcus/spreadsheet/types.hpp ++++ b/include/orcus/spreadsheet/types.hpp +@@ -22,8 +22,8 @@ typedef unsigned char color_elem_t; + typedef unsigned short col_width_t; + typedef unsigned short row_height_t; + +-ORCUS_SPM_DLLPUBLIC col_width_t get_default_column_width(); +-ORCUS_SPM_DLLPUBLIC row_height_t get_default_row_height(); ++ORCUS_DLLPUBLIC col_width_t get_default_column_width(); ++ORCUS_DLLPUBLIC row_height_t get_default_row_height(); + + enum border_direction_t + { +@@ -192,7 +192,7 @@ enum databar_axis_t + * Convert a string representation of a totals row function name to its + * equivalent enum value. + */ +-ORCUS_SPM_DLLPUBLIC totals_row_function_t to_totals_row_function_enum(const char* p, size_t n); ++ORCUS_DLLPUBLIC totals_row_function_t to_totals_row_function_enum(const char* p, size_t n); + + }} + +-- +2.4.1 + diff --git a/external/liborcus/0001-workaround-a-linking-problem-on-windows.patch b/external/liborcus/0001-workaround-a-linking-problem-on-windows.patch new file mode 100644 index 0000000..5710877 --- /dev/null +++ b/external/liborcus/0001-workaround-a-linking-problem-on-windows.patch @@ -0,0 +1,45 @@ +From 71841b7aa7c5e75a793cfaafb31865524a74d9fc Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 4 Jun 2015 16:13:18 +0200 +Subject: [PATCH] workaround a linking problem on windows + +Linking scfiltlo.dll gives the following error: + +xmlcontext.o : error LNK2019: unresolved external symbol "char const * const orcus::XMLNS_UNKNOWN_ID" (?XMLNS_UNKNOWN_ID@orcus@@3QBDB) referenced in function "void __cdecl std::_For_each(unsigned int const *,unsigned int const *,class `anonymous namespace'::SetNamespaceAlias &)" (??$_For_each@PBIVSetNamespaceAlias@?A0xafb5dd33@@@std@@YAXPBI0AAVSetNamespaceAlias@?A0xafb5dd33@@@Z) +C:/cygwin/home/tdf/lode/jenkins/workspace/lo_gerrit_master/Gerrit/Gerrit/Platform/Windows/instdir/program/scfiltlo.dll : fatal error LNK1120: 1 unresolved externals + +I have got no idea what is the cause of this: the constant--exported in +liborcus-parser.dll--is used in liborus.dll without any problem. +--- + include/orcus/types.hpp | 2 +- + src/parser/types.cpp | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/include/orcus/types.hpp b/include/orcus/types.hpp +index b6e3f83..8027f25 100644 +--- a/include/orcus/types.hpp ++++ b/include/orcus/types.hpp +@@ -21,7 +21,7 @@ namespace orcus { + typedef size_t xml_token_t; + typedef const char* xmlns_id_t; + +-ORCUS_PSR_DLLPUBLIC extern const xmlns_id_t XMLNS_UNKNOWN_ID; ++const xmlns_id_t XMLNS_UNKNOWN_ID = NULL; + ORCUS_PSR_DLLPUBLIC extern const xml_token_t XML_UNKNOWN_TOKEN; + ORCUS_PSR_DLLPUBLIC extern const size_t index_not_found; + ORCUS_PSR_DLLPUBLIC extern const size_t unspecified; +diff --git a/src/parser/types.cpp b/src/parser/types.cpp +index be4e304..0a1b4a7 100644 +--- a/src/parser/types.cpp ++++ b/src/parser/types.cpp +@@ -12,7 +12,6 @@ + + namespace orcus { + +-const xmlns_id_t XMLNS_UNKNOWN_ID = NULL; + const xml_token_t XML_UNKNOWN_TOKEN = 0; + + const size_t index_not_found = std::numeric_limits::max(); +-- +2.4.1 + diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk new file mode 100644 index 0000000..96899e7 --- /dev/null +++ b/external/liborcus/ExternalPackage_liborcus.mk @@ -0,0 +1,22 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus)) + +$(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus)) + +ifeq ($(OS),MACOSX) +$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.10.0.dylib,src/liborcus/.libs/liborcus-0.10.0.dylib)) +$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.10.0.dylib,src/parser/.libs/liborcus-parser-0.10.0.dylib)) +else ifeq ($(filter IOS ANDROID,$(OS)),) +$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.10.so.0,src/liborcus/.libs/liborcus-0.10.so.0.0.0)) +$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.10.so.0,src/parser/.libs/liborcus-parser-0.10.so.0.0.0)) +endif + +# vim: set noet sw=4 ts=4: diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk index 90d453c..ff488bf 100644 --- a/external/liborcus/ExternalProject_liborcus.mk +++ b/external/liborcus/ExternalProject_liborcus.mk @@ -87,8 +87,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) : MDDS_LIBS=' ' \ MAKE=$(MAKE) ./configure \ --with-pic \ - --enable-static \ - --disable-shared \ + --enable-shared \ + --disable-static \ $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \ --disable-spreadsheet-model \ --without-tools \ diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk new file mode 100644 index 0000000..c3b4eec --- /dev/null +++ b/external/liborcus/Library_orcus-parser.mk @@ -0,0 +1,55 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Library_Library,orcus-parser)) + +$(eval $(call gb_Library_use_unpacked,orcus-parser,liborcus)) + +$(eval $(call gb_Library_use_externals,orcus-parser,\ + boost_headers \ + boost_system \ + mdds_headers \ + zlib \ +)) + +$(eval $(call gb_Library_set_warnings_not_errors,orcus-parser)) + +$(eval $(call gb_Library_set_include,orcus-parser,\ + -I$(call gb_UnpackedTarball_get_dir,liborcus)/include \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_add_defs,orcus-parser,\ + -DBOOST_ALL_NO_LIB \ + -D__ORCUS_PSR_BUILDING_DLL \ +)) + +$(eval $(call gb_Library_set_generated_cxx_suffix,orcus-parser,cpp)) + +$(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\ + UnpackedTarball/liborcus/src/parser/base64 \ + UnpackedTarball/liborcus/src/parser/cell_buffer \ + UnpackedTarball/liborcus/src/parser/css_parser_base \ + UnpackedTarball/liborcus/src/parser/css_types \ + UnpackedTarball/liborcus/src/parser/csv_parser_base \ + UnpackedTarball/liborcus/src/parser/exception \ + UnpackedTarball/liborcus/src/parser/parser_global \ + UnpackedTarball/liborcus/src/parser/pstring \ + UnpackedTarball/liborcus/src/parser/sax_parser_base \ + UnpackedTarball/liborcus/src/parser/sax_token_parser \ + UnpackedTarball/liborcus/src/parser/stream \ + UnpackedTarball/liborcus/src/parser/string_pool \ + UnpackedTarball/liborcus/src/parser/tokens \ + UnpackedTarball/liborcus/src/parser/types \ + UnpackedTarball/liborcus/src/parser/xml_namespace \ + UnpackedTarball/liborcus/src/parser/zip_archive \ + UnpackedTarball/liborcus/src/parser/zip_archive_stream \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk new file mode 100644 index 0000000..ae98d5e --- /dev/null +++ b/external/liborcus/Library_orcus.mk @@ -0,0 +1,104 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Library_Library,orcus)) + +$(eval $(call gb_Library_use_unpacked,orcus,liborcus)) + +$(eval $(call gb_Library_use_externals,orcus,\ + boost_headers \ + boost_iostreams \ + boost_system \ + mdds_headers \ + zlib \ +)) + +$(eval $(call gb_Library_set_warnings_not_errors,orcus)) + +$(eval $(call gb_Library_set_include,orcus,\ + -I$(call gb_UnpackedTarball_get_dir,liborcus)/include \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_add_defs,orcus,\ + -DBOOST_ALL_NO_LIB \ + -D__ORCUS_BUILDING_DLL \ +)) + +$(eval $(call gb_Library_use_libraries,orcus,\ + orcus-parser \ +)) + +$(eval $(call gb_Library_set_generated_cxx_suffix,orcus,cpp)) + +$(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/config \ + UnpackedTarball/liborcus/src/liborcus/css_document_tree \ + UnpackedTarball/liborcus/src/liborcus/css_selector \ + UnpackedTarball/liborcus/src/liborcus/detection_result \ + UnpackedTarball/liborcus/src/liborcus/dom_tree \ + UnpackedTarball/liborcus/src/liborcus/format_detection \ + UnpackedTarball/liborcus/src/liborcus/global \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_cell_context \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_context \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_detection_handler \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_handler \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_helper \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_namespace_types \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_sheet_context \ + UnpackedTarball/liborcus/src/liborcus/gnumeric_tokens \ + UnpackedTarball/liborcus/src/liborcus/interface \ + UnpackedTarball/liborcus/src/liborcus/measurement \ + UnpackedTarball/liborcus/src/liborcus/odf_namespace_types \ + UnpackedTarball/liborcus/src/liborcus/odf_para_context \ + UnpackedTarball/liborcus/src/liborcus/odf_styles \ + UnpackedTarball/liborcus/src/liborcus/odf_styles_context \ + UnpackedTarball/liborcus/src/liborcus/odf_tokens \ + UnpackedTarball/liborcus/src/liborcus/ods_content_xml_context \ + UnpackedTarball/liborcus/src/liborcus/ods_content_xml_handler \ + UnpackedTarball/liborcus/src/liborcus/ods_session_data \ + UnpackedTarball/liborcus/src/liborcus/ooxml_content_types \ + UnpackedTarball/liborcus/src/liborcus/ooxml_global \ + UnpackedTarball/liborcus/src/liborcus/ooxml_namespace_types \ + UnpackedTarball/liborcus/src/liborcus/ooxml_schemas \ + UnpackedTarball/liborcus/src/liborcus/ooxml_tokens \ + UnpackedTarball/liborcus/src/liborcus/ooxml_types \ + UnpackedTarball/liborcus/src/liborcus/opc_context \ + UnpackedTarball/liborcus/src/liborcus/opc_reader \ + UnpackedTarball/liborcus/src/liborcus/orcus_csv \ + UnpackedTarball/liborcus/src/liborcus/orcus_gnumeric \ + UnpackedTarball/liborcus/src/liborcus/orcus_ods \ + UnpackedTarball/liborcus/src/liborcus/orcus_xlsx \ + UnpackedTarball/liborcus/src/liborcus/orcus_xml \ + UnpackedTarball/liborcus/src/liborcus/session_context \ + UnpackedTarball/liborcus/src/liborcus/spreadsheet_interface \ + UnpackedTarball/liborcus/src/liborcus/spreadsheet_types \ + UnpackedTarball/liborcus/src/liborcus/xls_xml_namespace_types \ + UnpackedTarball/liborcus/src/liborcus/xlsx_autofilter_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_conditional_format_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_handler \ + UnpackedTarball/liborcus/src/liborcus/xlsx_helper \ + UnpackedTarball/liborcus/src/liborcus/xlsx_pivot_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_revision_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_session_data \ + UnpackedTarball/liborcus/src/liborcus/xlsx_sheet_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_table_context \ + UnpackedTarball/liborcus/src/liborcus/xlsx_types \ + UnpackedTarball/liborcus/src/liborcus/xlsx_workbook_context \ + UnpackedTarball/liborcus/src/liborcus/xml_context_base \ + UnpackedTarball/liborcus/src/liborcus/xml_context_global \ + UnpackedTarball/liborcus/src/liborcus/xml_map_tree \ + UnpackedTarball/liborcus/src/liborcus/xml_simple_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \ + UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/liborcus/Module_liborcus.mk b/external/liborcus/Module_liborcus.mk index 42f1715..e75b983 100644 --- a/external/liborcus/Module_liborcus.mk +++ b/external/liborcus/Module_liborcus.mk @@ -10,8 +10,23 @@ $(eval $(call gb_Module_Module,liborcus)) $(eval $(call gb_Module_add_targets,liborcus,\ - ExternalProject_liborcus \ UnpackedTarball_liborcus \ )) +ifeq ($(COM),MSC) + +$(eval $(call gb_Module_add_targets,liborcus,\ + Library_orcus \ + Library_orcus-parser \ +)) + +else # !MSC + +$(eval $(call gb_Module_add_targets,liborcus,\ + ExternalPackage_liborcus \ + ExternalProject_liborcus \ +)) + +endif + # vim: set noet sw=4 ts=4: diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk index 126f250..ae569ed 100644 --- a/external/liborcus/UnpackedTarball_liborcus.mk +++ b/external/liborcus/UnpackedTarball_liborcus.mk @@ -11,28 +11,13 @@ $(eval $(call gb_UnpackedTarball_Unpacke $(eval $(call gb_UnpackedTarball_set_tarball,liborcus,$(ORCUS_TARBALL))) -$(eval $(call gb_UnpackedTarball_set_patchlevel,liborcus,0)) - -liborcus_patches := - -# make config.sub recognize arm-linux-androideabi -# liborcus_patches += liborcus_0.1.0-configure.patch - -# don't use dllimport -liborcus_patches += liborcus_0.1.0-dllimport.patch - -# Any -fvisibility= etc. settings are passed into liborcus' CXXFLAGS via -# gb_VISIBILITY_FLAGS[_CXX]: -liborcus_patches += visibility.patch - -# : - -liborcus_patches += liborcus_0.7.0-configure.gcc5.patch.0 +$(eval $(call gb_UnpackedTarball_set_patchlevel,liborcus,1)) $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ - $(foreach patch,$(liborcus_patches),external/liborcus/$(patch)) \ + external/liborcus/0001-fix-dllexport-decls.patch \ + external/liborcus/0001-mark-more-symbols-as-public.patch \ + external/liborcus/0001-these-functions-are-implemented-in-liborcus.patch \ + external/liborcus/0001-workaround-a-linking-problem-on-windows.patch \ )) # vim: set noet sw=4 ts=4: diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx index ce19c0b..e418ed8 100644 --- a/sc/source/filter/html/htmlpars.cxx +++ b/sc/source/filter/html/htmlpars.cxx @@ -3170,6 +3170,34 @@ public: maPropName = MemStr(); maPropValue = MemStr(); } + + // new members + void simple_selector_type(const char* /*p*/, size_t /*n*/) {} + + void simple_selector_class(const char* /*p*/, size_t /*n*/) {} + + void simple_selector_pseudo_element(orcus::css::pseudo_element_t /*pe*/) {} + + void simple_selector_pseudo_class(orcus::css::pseudo_class_t /*pc*/) {} + + void simple_selector_id(const char* /*p*/, size_t /*n*/) {} + + void end_simple_selector() {} + + void end_selector() {} + + void combinator(orcus::css::combinator_t /*combinator*/) {} + + void rgb(uint8_t /*red*/ , uint8_t /*green*/ , uint8_t /*blue*/ ) {} + + void rgba(uint8_t /*red*/ , uint8_t /*green*/ , uint8_t /*blue*/ , double /*alpha*/ ) {} + + void hsl(uint8_t /*hue*/ , uint8_t /*sat*/ , uint8_t /*light*/ ) {} + + void hsla(uint8_t /*hue*/ , uint8_t /*sat*/ , uint8_t /*light*/ , double /*alpha*/ ) {} + + void url(const char* /*p*/, size_t /*n*/) {} + }; } @@ -3183,7 +3211,7 @@ void ScHTMLQueryParser::ParseStyle(const OUString& rStrm) { aParser.parse(); } - catch (const orcus::css_parse_error&) + catch (const orcus::css::parse_error&) { // TODO: Parsing of CSS failed. Do nothing for now. } diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx index a778310..633b43d 100644 --- a/sc/source/filter/inc/orcusinterface.hxx +++ b/sc/source/filter/inc/orcusinterface.hxx @@ -43,6 +43,9 @@ public: ScOrcusGlobalSettings(ScDocumentImport& rDoc); virtual void set_origin_date(int year, int month, int day) SAL_OVERRIDE; + + virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) SAL_OVERRIDE; + virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const SAL_OVERRIDE; }; class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_strings @@ -120,9 +123,12 @@ public: orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, int year, int month, int day, int hour, int minute, double second) SAL_OVERRIDE; virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) SAL_OVERRIDE; + virtual void set_format(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start, + orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end, size_t xf_index) SAL_OVERRIDE; virtual void set_formula(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n) SAL_OVERRIDE; virtual void set_formula_result(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) SAL_OVERRIDE; + virtual void set_formula_result(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double val) SAL_OVERRIDE; virtual void set_shared_formula( orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::formula_grammar_t grammar, size_t sindex, @@ -203,6 +209,10 @@ public: virtual void set_cell_xf_count(size_t n) SAL_OVERRIDE; virtual size_t commit_cell_xf() SAL_OVERRIDE; + // dxf + virtual void set_dxf_count(size_t count) SAL_OVERRIDE; + virtual size_t commit_dxf() SAL_OVERRIDE; + // xf (cell format) - used both by cell xf and cell style xf. virtual void set_xf_number_format(size_t index) SAL_OVERRIDE; diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx index 3735f28..82b8f9e 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -35,6 +35,15 @@ void ScOrcusGlobalSettings::set_origin_date(int year, int month, int day) mrDoc.setOriginDate(year, month, day); } +void ScOrcusGlobalSettings::set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t /*grammar*/) +{ +} + +orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula_grammar() const +{ + return orcus::spreadsheet::formula_grammar_unknown; +} + ScOrcusFactory::StringCellCache::StringCellCache(const ScAddress& rPos, size_t nIndex) : maPos(rPos), mnIndex(nIndex) {} @@ -263,6 +272,11 @@ void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/, size_t /*xf_ { } +void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/, + os::row_t /*row_end*/, os::col_t /*col_end*/, size_t /*xf_index*/) +{ +} + namespace { formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t grammar ) @@ -270,16 +284,18 @@ formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_ODFF; switch(grammar) { - case orcus::spreadsheet::ods: + case orcus::spreadsheet::formula_grammar_ods: eGrammar = formula::FormulaGrammar::GRAM_ODFF; break; - case orcus::spreadsheet::xlsx_2007: - case orcus::spreadsheet::xlsx_2010: + case orcus::spreadsheet::formula_grammar_xlsx_2007: + case orcus::spreadsheet::formula_grammar_xlsx_2010: eGrammar = formula::FormulaGrammar::GRAM_OOXML; break; - case orcus::spreadsheet::gnumeric: + case orcus::spreadsheet::formula_grammar_gnumeric: eGrammar = formula::FormulaGrammar::GRAM_ENGLISH_XL_A1; break; + case orcus::spreadsheet::formula_grammar_unknown: + break; } return eGrammar; @@ -309,6 +325,19 @@ void ScOrcusSheet::set_formula_result(os::row_t row, os::col_t col, const char* pCell->SetHybridString(mrDoc.getDoc().GetSharedStringPool().intern(aResult)); } +void ScOrcusSheet::set_formula_result(os::row_t row, os::col_t col, double /*val*/) +{ + ScFormulaCell* pCell = mrDoc.getDoc().GetFormulaCell(ScAddress(col, row, mnTab)); + if (!pCell) + { + SAL_WARN("sc", "trying to set formula result for non formula \ + cell! Col: " << col << ";Row: " << row << ";Tab: " << mnTab); + return; + } + + // TODO: FIXME +} + void ScOrcusSheet::set_shared_formula( os::row_t row, os::col_t col, os::formula_grammar_t grammar, size_t sindex, const char* p_formula, size_t n_formula) @@ -577,6 +606,17 @@ size_t ScOrcusStyles::commit_cell_xf() return 0; } +// dxf + +void ScOrcusStyles::set_dxf_count(size_t /*n*/) +{ +} + +size_t ScOrcusStyles::commit_dxf() +{ + return 0; +} + // xf (cell format) - used both by cell xf and cell style xf. void ScOrcusStyles::set_xf_number_format(size_t /*index*/) -- 1.7.9.5