diff options
-rw-r--r-- | Repository.mk | 1 | ||||
-rwxr-xr-x | android/mobile-config.py | 99 | ||||
-rw-r--r-- | libreofficekit/Executable_tilebench.mk | 32 | ||||
-rw-r--r-- | libreofficekit/Module_libreofficekit.mk | 4 | ||||
-rw-r--r-- | libreofficekit/qa/tilebench/tilebench.cxx | 90 |
5 files changed, 226 insertions, 0 deletions
diff --git a/Repository.mk b/Repository.mk index 7b86d588c68c..29dbf6e8aa0b 100644 --- a/Repository.mk +++ b/Repository.mk @@ -86,6 +86,7 @@ $(eval $(call gb_Helper_register_executables_for_install,OOO,ooo, \ )) $(eval $(call gb_Helper_register_executables,OOO, \ + $(if $(filter LINUX,$(OS)), tilebench) \ $(call gb_Helper_optional,CRASHREP,crashrep) \ gnome-open-url.bin \ $(if $(filter-out ANDROID IOS MACOSX WNT,$(OS)),oosplash) \ diff --git a/android/mobile-config.py b/android/mobile-config.py new file mode 100755 index 000000000000..6f292975d34b --- /dev/null +++ b/android/mobile-config.py @@ -0,0 +1,99 @@ +#!/usr/bin/python +# 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/. + +# this tool rips out configuration pieces that are not useful for +# a mobile viewer / editing application without a full UI. +# +# ideally the postprocess/ makefile would cope with this but its +# already over-complicated by rampant conditionals. + +import sys +import xml.etree.ElementTree as ET + + +main_xcd_discard = [ + 'org.openoffice.Office/TableWizard', # huge + + 'org.openoffice.Office/WebWizard', + 'org.openoffice.Office.DataAccess/Drivers', # no database + 'org.openoffice.Office/Addons', # no addons + + # no conventional UI; reverse sorted by size + 'org.openoffice.Office.UI/GenericCommands', + 'org.openoffice.Office/Accelerators', + 'org.openoffice.Office/UI', + + 'org.openoffice.Office.UI/DrawImpressCommands', + 'org.openoffice.Office.UI/Sidebar', + 'org.openoffice.Office.UI/ChartCommands', + 'org.openoffice.Office.UI/DbuCommands', + 'org.openoffice.Office.UI/Controller', + 'org.openoffice.Office/UI', + 'org.openoffice.Office.UI/StartModuleCommands', + 'org.openoffice.Office.UI/BasicIDEWindowState', + 'org.openoffice.Office.UI/GenericCategories', + 'org.openoffice.Office.UI/ChartWindowState', + 'org.openoffice.Office.UI/Factories', + 'org.openoffice.Office.UI/BaseWindowState', + 'org.openoffice.Office.UI/BasicIDECommands', + 'org.openoffice.Office.UI/Sidebar', + 'org.openoffice.Office.UI/BibliographyCommands', + 'org.openoffice.Office.UI/DbQueryWindowState', + 'org.openoffice.Office.UI/WindowState', + 'org.openoffice.Office.UI/Controller', + 'org.openoffice.Office.UI/DbRelationWindowState', + 'org.openoffice.Office.UI/DbTableWindowState', + 'org.openoffice.Office.UI/DbTableDataWindowState', + 'org.openoffice.Office.UI/DbBrowserWindowState', + 'org.openoffice.Office.UI/WindowContentFactories', + 'org.openoffice.Office.UI/Factories', + 'org.openoffice.Office.UI/StartModuleWindowState', + 'org.openoffice.Office.UI/GlobalSettings', + 'org.openoffice.Office.UI/Commands', + 'org.openoffice.Office.UI/BibliographyCommands', + 'org.openoffice.Office.UI/StartModuleCommands', + 'org.openoffice.Office.UI/DrawImpressCommands', + 'org.openoffice.Office.UI/BasicIDECommands', + 'org.openoffice.Office.UI/GenericCommands', + 'org.openoffice.Office.UI/ChartCommands', + 'org.openoffice.Office.UI/DbuCommands', + 'org.openoffice.Office.UI/BibliographyWindowState', + 'org.openoffice.Office.UI/StartModuleWindowState', + 'org.openoffice.Office.UI/DbTableDataWindowState', + 'org.openoffice.Office.UI/DbRelationWindowState', + 'org.openoffice.Office.UI/DbBrowserWindowState', + 'org.openoffice.Office.UI/BasicIDEWindowState', + 'org.openoffice.Office.UI/DbTableWindowState', + 'org.openoffice.Office.UI/DbQueryWindowState', + 'org.openoffice.Office.UI/ChartWindowState', + 'org.openoffice.Office.UI/BaseWindowState', + 'org.openoffice.Office.UI/GenericCategories', + 'org.openoffice.Office.UI/Category', + ] + + +if __name__ == '__main__': + tree = ET.parse(sys.argv[1]) + root = tree.getroot() + + print "Foo\n" + saved = 0 + total = 0 + for child in root: + section = child.attrib['{http://openoffice.org/2001/registry}name'] + package = child.attrib['{http://openoffice.org/2001/registry}package'] + size = len(ET.tostring(child)); + total = total + size + key = '%s/%s' % (package, section) + if key in main_xcd_discard: + root.remove(child) + print 'removed %s - saving %d' % (key, size) + saved = saved + size + + print "saved %d of %d bytes: %2.f%%" % (saved, total, saved*100.0/total) + tree.write(sys.argv[2], 'UTF-8', True) + diff --git a/libreofficekit/Executable_tilebench.mk b/libreofficekit/Executable_tilebench.mk new file mode 100644 index 000000000000..11e73dead0bd --- /dev/null +++ b/libreofficekit/Executable_tilebench.mk @@ -0,0 +1,32 @@ +# -*- 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_Executable_Executable,tilebench)) + +$(eval $(call gb_Executable_set_include,tilebench,\ + $$(INCLUDE) \ + -I$(SRCDIR)/desktop/inc \ +)) + +$(eval $(call gb_Executable_use_libraries,tilebench,\ + libreofficekitgtk \ + sal \ +)) + +$(eval $(call gb_Executable_add_libs,tilebench,\ + -lm \ + -ldl \ + -lpthread \ +)) + +$(eval $(call gb_Executable_add_exception_objects,tilebench,\ + libreofficekit/qa/tilebench/tilebench \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/libreofficekit/Module_libreofficekit.mk b/libreofficekit/Module_libreofficekit.mk index a5b9cb06348c..716ff48512fa 100644 --- a/libreofficekit/Module_libreofficekit.mk +++ b/libreofficekit/Module_libreofficekit.mk @@ -22,6 +22,10 @@ $(eval $(call gb_Module_add_targets,libreofficekit,\ )) endif # ($(ENABLE_GTK),) +$(eval $(call gb_Module_add_targets,libreofficekit,\ + Executable_tilebench \ +)) + endif # ($(OS),LINUX) # vim: set ts=4 sw=4 et: diff --git a/libreofficekit/qa/tilebench/tilebench.cxx b/libreofficekit/qa/tilebench/tilebench.cxx new file mode 100644 index 000000000000..80d5c1654db7 --- /dev/null +++ b/libreofficekit/qa/tilebench/tilebench.cxx @@ -0,0 +1,90 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * 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/. + */ + +#include <assert.h> +#include <stdio.h> +#include <string.h> + +#include <vector> +#include <osl/time.h> +#include <LibreOfficeKit/LibreOfficeKitInit.h> +#include <LibreOfficeKit/LibreOfficeKit.hxx> + +using namespace lok; + +static int help() +{ + fprintf( stderr, "Usage: tilebench <absolute-path-to-libreoffice-install> [path to document]\n" ); + fprintf( stderr, "renders a selection of small tiles from the document, checksums them and times the process\n" ); + return 1; +} + +static double getTimeNow() +{ + TimeValue aValue; + osl_getSystemTime(&aValue); + return (double)aValue.Seconds + + (double)aValue.Nanosec / (1000*1000*1000); +} + +int main( int argc, char* argv[] ) +{ + struct TimeRecord { + const char *mpName; + double mfTime; + + TimeRecord() : mpName(NULL), mfTime(getTimeNow()) { } + explicit TimeRecord(const char *pName) : + mpName(pName ), mfTime(getTimeNow()) { } + explicit TimeRecord(const TimeRecord *pSrc) : + mpName(pSrc->mpName), mfTime(pSrc->mfTime) { } + }; + std::vector< TimeRecord > aTimes; + if( argc < 2 || + ( argc > 1 && ( !strcmp( argv[1], "--help" ) || !strcmp( argv[1], "-h" ) ) ) ) + return help(); + + if ( argv[1][0] != '/' ) + { + fprintf(stderr, "Absolute path required to libreoffice install\n"); + return 1; + } + + aTimes.push_back(TimeRecord("initialization")); + Office *pOffice = lok_cpp_init(argv[1]); + aTimes.push_back(TimeRecord()); + + if (argv[2] != NULL) + { + aTimes.push_back(TimeRecord("load document")); + Document *pDocument(pOffice->documentLoad(argv[2])); + aTimes.push_back(TimeRecord()); + + aTimes.push_back(TimeRecord("destroy document")); + delete pDocument; + aTimes.push_back(TimeRecord()); + } + + delete pOffice; + + double nTotal = 0.0; + fprintf (stderr, "profile run:\n"); + for (size_t i = 0; i < aTimes.size() - 1; i++) + { + double nDelta = aTimes[i+1].mfTime - aTimes[i].mfTime; + fprintf (stderr, " %s - %2.4f(ms)\n", aTimes[i].mpName, nDelta * 1000.0); + if (aTimes[i+1].mpName == NULL) + i++; // skip it. + nTotal += nDelta; + } + fprintf (stderr, "Total: %2.4f(s)\n", nTotal); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |