0eb2ffe
From f1c795baf1268c2650c706fc2aec28c2a7fbaf0e Mon Sep 17 00:00:00 2001
0eb2ffe
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
0eb2ffe
Date: Fri, 23 Nov 2012 09:42:39 +0000
0eb2ffe
Subject: [PATCH] split qnametostr up to try and make .o's small enough for
0eb2ffe
 ppc64
0eb2ffe
0eb2ffe
i.e. relocation truncated to fix: R_PPC64_TOC16_DS
0eb2ffe
0eb2ffe
while I'm at it merge the standalone header/footer files into the .xslt and
0eb2ffe
simplify the makefile.
0eb2ffe
0eb2ffe
Change-Id: Iee0e9b5dd96868f49f1bed22fb5dc6d28c8cef81
0eb2ffe
---
0eb2ffe
 writerfilter/CustomTarget_source.mk                | 16 +++----
0eb2ffe
 writerfilter/Library_writerfilter.mk               | 21 ++-------
0eb2ffe
 writerfilter/source/doctok/qnametostr.xsl          |  6 +++
0eb2ffe
 writerfilter/source/ooxml/qnametostr.xsl           |  8 +++-
0eb2ffe
 .../source/resourcemodel/qnametostrcore.cxx        | 52 ++++++++++++++++++++++
0eb2ffe
 writerfilter/source/resourcemodel/qnametostrfooter |  7 ---
0eb2ffe
 writerfilter/source/resourcemodel/qnametostrheader | 48 --------------------
0eb2ffe
 7 files changed, 74 insertions(+), 84 deletions(-)
0eb2ffe
 create mode 100644 writerfilter/source/resourcemodel/qnametostrcore.cxx
0eb2ffe
 delete mode 100644 writerfilter/source/resourcemodel/qnametostrfooter
0eb2ffe
 delete mode 100644 writerfilter/source/resourcemodel/qnametostrheader
0eb2ffe
0eb2ffe
diff --git a/writerfilter/CustomTarget_source.mk b/writerfilter/CustomTarget_source.mk
0eb2ffe
index fc29784..5ee3041 100644
0eb2ffe
--- a/writerfilter/CustomTarget_source.mk
0eb2ffe
+++ b/writerfilter/CustomTarget_source.mk
3500bf7
@@ -157,8 +157,8 @@
0eb2ffe
 
3500bf7
 # resourcemodel
0eb2ffe
 
3500bf7
-wf_GEN_model_QNameToStr_cxx=$(writerfilter_WORK)/qnametostr.cxx
3500bf7
-wf_GEN_ooxml_QNameToStr_tmp=$(writerfilter_WORK)/OOXMLqnameToStr.tmp
f92ab5c
+wf_GEN_doctok_QNameToStr_cxx=$(writerfilter_WORK)/doctok/qnametostr.cxx
3500bf7
+wf_GEN_ooxml_QNameToStr_cxx=$(writerfilter_WORK)/ooxml/qnametostr.cxx
3500bf7
 wf_GEN_model_SprmCodeToStr_cxx=$(writerfilter_WORK)/sprmcodetostr.cxx
3500bf7
 wf_GEN_model_SprmCodeToStr_tmp=$(writerfilter_WORK)/sprmcodetostr.tmp
3500bf7
 wf_GEN_doctok_QnameToStr_tmp=$(writerfilter_WORK)/DOCTOKqnameToStr.tmp
3500bf7
@@ -170,18 +170,14 @@
3500bf7
 wf_DEP_ooxml_namespaces_txt=$(OUTDIR)/inc/oox/namespaces.txt
3500bf7
 wf_GEN_ooxml_preprocess_xsl=$(writerfilter_WORK)/modelpreprocess.xsl
3500bf7
 
3500bf7
-$(wf_GEN_ooxml_QNameToStr_tmp): $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed)
3500bf7
+$(wf_GEN_ooxml_QNameToStr_cxx): $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed) $(wf_SRC_ooxml_FactoryTools_xsl)
0eb2ffe
 	$(call gb_Output_announce,$@,build,XSL,1)
3500bf7
 	$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed)) > $@
0eb2ffe
 
3500bf7
-$(wf_GEN_doctok_QnameToStr_tmp): $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model) | $(writerfilter_WORK)/.dir
f92ab5c
+$(wf_GEN_doctok_QNameToStr_cxx): $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model) $(wf_SRC_doctok_ResourceTools_xsl) | $(writerfilter_WORK)/.dir
0eb2ffe
 	$(call gb_Output_announce,$@,build,XSL,1)
3500bf7
 	$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model)) > $@
0eb2ffe
 
3500bf7
-$(wf_GEN_model_QNameToStr_cxx): $(wf_GEN_ooxml_QNameToStr_tmp) $(wf_GEN_doctok_QnameToStr_tmp) $(writerfilter_SRC)/resourcemodel/qnametostrheader $(writerfilter_SRC)/resourcemodel/qnametostrfooter $(wf_SRC_ooxml_FactoryTools_xsl) $(wf_SRC_doctok_ResourceTools_xsl)
0eb2ffe
-	$(call gb_Output_announce,$@,build,CAT,1)
3500bf7
-	cat $(writerfilter_SRC)/resourcemodel/qnametostrheader $(wf_GEN_ooxml_QNameToStr_tmp) $(wf_GEN_doctok_QnameToStr_tmp) $(writerfilter_SRC)/resourcemodel/qnametostrfooter > $@
0eb2ffe
-
3500bf7
 $(wf_GEN_model_SprmCodeToStr_tmp) : $(wf_SRC_doctok_SprmCodeToStr_xsl) $(wf_SRC_doctok_Model) | $(writerfilter_WORK)/.dir
0eb2ffe
 	$(call gb_Output_announce,$@,build,XSL,1)
3500bf7
 	$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_doctok_SprmCodeToStr_xsl) $(wf_SRC_doctok_Model)) > $@
3500bf7
@@ -218,7 +214,8 @@
3500bf7
 	$(wf_GEN_ooxml_FastTokens_hxx) \
3500bf7
 	$(wf_GEN_ooxml_GperfFastToken_hxx) \
3500bf7
 	$(wf_GEN_ooxml_NamespaceIds_hxx) \
3500bf7
-	$(wf_GEN_model_QNameToStr_cxx) \
3500bf7
+	$(wf_GEN_doctok_QNameToStr_cxx) \
3500bf7
+	$(wf_GEN_ooxml_QNameToStr_cxx) \
3500bf7
 	$(wf_GEN_model_SprmCodeToStr_cxx) \
3500bf7
 	$(patsubst %,$(writerfilter_WORK)/OOXMLFactory_%.hxx,$(WRITERFILTER_OOXMLNAMESPACES)) \
3500bf7
 	$(patsubst %,$(writerfilter_WORK)/OOXMLFactory_%.cxx,$(WRITERFILTER_OOXMLNAMESPACES)) \
0eb2ffe
diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
0eb2ffe
index 1d7c667..870732f 100644
0eb2ffe
--- a/writerfilter/Library_writerfilter.mk
0eb2ffe
+++ b/writerfilter/Library_writerfilter.mk
0eb2ffe
@@ -170,6 +170,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
0eb2ffe
     writerfilter/source/resourcemodel/TagLogger \
0eb2ffe
     writerfilter/source/resourcemodel/WW8Analyzer \
0eb2ffe
     writerfilter/source/resourcemodel/XPathLogger \
0eb2ffe
+    writerfilter/source/resourcemodel/qnametostrcore \
0eb2ffe
     writerfilter/source/resourcemodel/resourcemodel \
0eb2ffe
     writerfilter/source/resourcemodel/util \
0eb2ffe
 ))
0eb2ffe
@@ -180,24 +181,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,writerfilter,\
0eb2ffe
     CustomTarget/writerfilter/source/OOXMLFactory_generated \
0eb2ffe
     CustomTarget/writerfilter/source/OOXMLFactory_values \
0eb2ffe
     CustomTarget/writerfilter/source/sprmcodetostr \
0eb2ffe
+    CustomTarget/writerfilter/source/doctok/qnametostr \
0eb2ffe
+    CustomTarget/writerfilter/source/ooxml/qnametostr \
0eb2ffe
 ))
0eb2ffe
 
0eb2ffe
-ifneq ($(COM)-$(OS)-$(CPUNAME),GCC-LINUX-POWERPC64)
0eb2ffe
-#Apparently some compilers, according to the original .mk this was converted
0eb2ffe
-#from, require this to be noopt or they fail to compile it, probably good to
0eb2ffe
-#revisit that and narrow this down to where it's necessary
0eb2ffe
-$(eval $(call gb_Library_add_generated_cxxobjects,writerfilter,\
0eb2ffe
-    CustomTarget/writerfilter/source/qnametostr \
0eb2ffe
-	, $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \
0eb2ffe
-))
0eb2ffe
-else
0eb2ffe
-#Ironically, on RHEL-6 PPC64 with no-opt the output is too large for the
0eb2ffe
-#toolchain, "Error: operand out of range", but it build fine with
0eb2ffe
-#normal flags
0eb2ffe
-$(eval $(call gb_Library_add_generated_cxxobjects,writerfilter,\
0eb2ffe
-    CustomTarget/writerfilter/source/qnametostr \
0eb2ffe
-	, $(gb_LinkTarget_EXCEPTIONFLAGS) \
0eb2ffe
-))
0eb2ffe
-endif
0eb2ffe
-
0eb2ffe
 # vim: set noet sw=4 ts=4:
0eb2ffe
diff --git a/writerfilter/source/doctok/qnametostr.xsl b/writerfilter/source/doctok/qnametostr.xsl
0eb2ffe
index a416512..e3009c9 100644
0eb2ffe
--- a/writerfilter/source/doctok/qnametostr.xsl
0eb2ffe
+++ b/writerfilter/source/doctok/qnametostr.xsl
0eb2ffe
@@ -22,8 +22,14 @@
0eb2ffe
 <xsl:include href="resourcetools.xsl"/>
0eb2ffe
 
0eb2ffe
 <xsl:template match="/">
0eb2ffe
+#include "doctok/resourceids.hxx"
0eb2ffe
+#include "resourcemodel/QNameToString.hxx"
0eb2ffe
+
0eb2ffe
+namespace writerfilter
0eb2ffe
+{
0eb2ffe
   <xsl:apply-templates select=".//UML:Model" mode="qnametostr"/>
0eb2ffe
   <xsl:apply-templates select='.//UML:Model' mode='sprmidstoxml'/>
0eb2ffe
   <xsl:apply-templates select='.//UML:Model' mode='analyzerdoctokids'/>
0eb2ffe
+}
0eb2ffe
 </xsl:template>
0eb2ffe
 </xsl:stylesheet>
0eb2ffe
diff --git a/writerfilter/source/ooxml/qnametostr.xsl b/writerfilter/source/ooxml/qnametostr.xsl
0eb2ffe
index 1dc689f..a7a7d6c 100644
0eb2ffe
--- a/writerfilter/source/ooxml/qnametostr.xsl
0eb2ffe
+++ b/writerfilter/source/ooxml/qnametostr.xsl
0eb2ffe
@@ -113,8 +113,14 @@ void ooxmlidsToXML(::std::ostream & out)
0eb2ffe
   </xsl:template>
0eb2ffe
 
0eb2ffe
   <xsl:template match="/">
0eb2ffe
+#include "ooxml/resourceids.hxx"
0eb2ffe
+#include "resourcemodel/QNameToString.hxx"
0eb2ffe
+
0eb2ffe
+namespace writerfilter
0eb2ffe
+{
0eb2ffe
     <xsl:call-template name="qnametostr"/>
0eb2ffe
     <xsl:call-template name="ooxmlidstoxml"/>
0eb2ffe
+}
0eb2ffe
   </xsl:template>
0eb2ffe
 
0eb2ffe
-</xsl:stylesheet>
0eb2ffe
\ No newline at end of file
0eb2ffe
+</xsl:stylesheet>
0eb2ffe
diff --git a/writerfilter/source/resourcemodel/qnametostrcore.cxx b/writerfilter/source/resourcemodel/qnametostrcore.cxx
0eb2ffe
new file mode 100644
0eb2ffe
index 0000000..81ed0f1
0eb2ffe
--- /dev/null
0eb2ffe
+++ b/writerfilter/source/resourcemodel/qnametostrcore.cxx
0eb2ffe
@@ -0,0 +1,52 @@
0eb2ffe
+/*
0eb2ffe
+ * This file is part of the LibreOffice project.
0eb2ffe
+ *
0eb2ffe
+ * This Source Code Form is subject to the terms of the Mozilla Public
0eb2ffe
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
0eb2ffe
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
0eb2ffe
+ *
0eb2ffe
+ * This file incorporates work covered by the following license notice:
0eb2ffe
+ *
0eb2ffe
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
0eb2ffe
+ *   contributor license agreements. See the NOTICE file distributed
0eb2ffe
+ *   with this work for additional information regarding copyright
0eb2ffe
+ *   ownership. The ASF licenses this file to you under the Apache
0eb2ffe
+ *   License, Version 2.0 (the "License"); you may not use this file
0eb2ffe
+ *   except in compliance with the License. You may obtain a copy of
0eb2ffe
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
0eb2ffe
+ */
0eb2ffe
+
0eb2ffe
+#include <resourcemodel/QNameToString.hxx>
0eb2ffe
+
0eb2ffe
+namespace writerfilter
0eb2ffe
+{
0eb2ffe
+
0eb2ffe
+QNameToString::Pointer_t QNameToString::pInstance;
0eb2ffe
+
0eb2ffe
+QNameToString::Pointer_t WRITERFILTER_RESOURCEMODEL_DLLPUBLIC QNameToString::Instance()
0eb2ffe
+{
0eb2ffe
+    if (pInstance.get() == NULL)
0eb2ffe
+        pInstance = QNameToString::Pointer_t(new QNameToString());
0eb2ffe
+
0eb2ffe
+    return pInstance;
0eb2ffe
+}
0eb2ffe
+
0eb2ffe
+string WRITERFILTER_RESOURCEMODEL_DLLPUBLIC QNameToString::operator()(Id qName)
0eb2ffe
+{
0eb2ffe
+    string sResult;
0eb2ffe
+
0eb2ffe
+    Map::const_iterator aIt = mMap.find(qName);
0eb2ffe
+    
0eb2ffe
+    if (aIt != mMap.end())
0eb2ffe
+        sResult = aIt->second;
0eb2ffe
+
0eb2ffe
+    return mMap[qName];
0eb2ffe
+}
0eb2ffe
+
0eb2ffe
+QNameToString::QNameToString()
0eb2ffe
+{
0eb2ffe
+    init_doctok();
0eb2ffe
+    init_ooxml();
0eb2ffe
+}
0eb2ffe
+
0eb2ffe
+}