Repository.mk | 2 desktop/Library_libreoffice.mk | 32 ++++++ desktop/Library_sofficeapp.mk | 5 + desktop/Module_desktop.mk | 6 + desktop/inc/liblibreoffice.hxx | 29 +++++ desktop/inc/liblibreoffice_impl.hxx | 27 +++++ desktop/source/lib/init.cxx | 166 ++++++++++++++++++++++++++++++++++ desktop/source/lib/shim.cxx | 57 +++++++++++ smoketest/Executable_libtest.mk | 47 +++++++++ smoketest/Module_smoketest.mk | 6 + smoketest/libtest.cxx | 38 +++++++ vcl/inc/vcl/svapp.hxx | 5 - vcl/source/app/svapp.cxx | 2 vcl/unx/generic/plugadapt/salplug.cxx | 30 ++---- 14 files changed, 429 insertions(+), 23 deletions(-)
New commits: commit ddaf31f183fe3f2fbf76c1b87eb5a943dc6d833f Author: Michael Meeks <michael.me...@suse.com> Date: Tue Mar 5 22:21:57 2013 +0000 liblibo: install test library by itself and install it. Also fix debugging with threads, find fundamentalrc correctly, make it headless, finally loads a document then exits. Change-Id: I2017075bf3b3c7198bde53b9fe85585089e5ab6c diff --git a/Repository.mk b/Repository.mk index e3ea69b..ffcf18c 100644 --- a/Repository.mk +++ b/Repository.mk @@ -45,6 +45,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \ gsicheck \ helpex \ idxdict \ + libtest \ lngconvex \ localize \ makedepend \ diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk index 96b18a1..dbe3e81 100644 --- a/desktop/Library_libreoffice.mk +++ b/desktop/Library_libreoffice.mk @@ -17,6 +17,7 @@ $(eval $(call gb_Library_set_include,libreoffice,\ $(eval $(call gb_Library_add_libs,libreoffice,\ $(if $(filter $(OS),LINUX), \ -ldl \ + -lpthread \ ) \ )) diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk index d97bff3..a05cceb 100644 --- a/desktop/Module_desktop.mk +++ b/desktop/Module_desktop.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Module_add_targets,desktop,\ AllLangResTarget_dkt \ Library_deployment \ Library_deploymentmisc \ - Library_libreoffice \ Library_offacc \ Library_sofficeapp \ Library_spl \ @@ -43,6 +42,12 @@ $(eval $(call gb_Module_add_targets,desktop,\ Zip_brand_dev \ )) +ifeq ($(OS),LINUX) +$(eval $(call gb_Module_add_targets,desktop,\ + Library_libreoffice \ +)) +endif + ifneq (,$(filter DESKTOP,$(BUILD_TYPE))) $(eval $(call gb_Module_add_targets,desktop,\ Executable_unopkg.bin \ diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index de5788d..06f5eac 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -87,8 +87,20 @@ aBasicErrorFunc( const OUString &rErr, const OUString &rAction ) } static void -initialize_uno( const rtl::OUString &aUserProfileURL ) +initialize_uno( const rtl::OUString &aAppURL ) { + rtl::Bootstrap::setIniFilename( aAppURL + "/fundamentalrc" ); + + OUString aValue; + rtl::Bootstrap::set( "CONFIGURATION_LAYERS", + "xcsxcu:${BRAND_BASE_DIR}/share/registry " + "res:${BRAND_BASE_DIR}/share/registry " +// "bundledext:${${BRAND_BASE_DIR}/program/unorc:BUNDLED_EXTENSIONS_USER}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini " ); +// "sharedext:${${BRAND_BASE_DIR}/program/unorc:SHARED_EXTENSIONS_USER}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini " +// "userext:${${BRAND_BASE_DIR}/program/unorc:UNO_USER_PACKAGES_CACHE}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini " +// "user:${$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/registrymodifications.xcu" + ); + xContext = cppu::defaultBootstrap_InitialComponentContext(); fprintf( stderr, "Uno initialized %d\n", xContext.is() ); xFactory = xContext->getServiceManager(); @@ -96,8 +108,9 @@ initialize_uno( const rtl::OUString &aUserProfileURL ) comphelper::setProcessServiceFactory(xSFactory); // set UserInstallation to user profile dir in test/user-template - rtl::Bootstrap aDefaultVars; - aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL ); +// rtl::Bootstrap aDefaultVars; +// aDefaultVars.set(rtl::OUString("UserInstallation"), aAppURL + "../registry" ); + // configmgr setup ? } bool @@ -117,15 +130,17 @@ LibLibreOffice_Impl::initialize( const char *app_path ) return false; try { - initialize_uno( aAppURL + "../registry" ); + initialize_uno( aAppURL ); force_c_locale(); + + // Force headless + rtl::Bootstrap::set( "SAL_USE_VCLPLUGIN", "svp" ); InitVCL(); - if (Application::IsHeadlessModeRequested()) - Application::EnableHeadlessMode(true); + Application::EnableHeadlessMode(true); ErrorHandler::RegisterDisplay( aBasicErrorFunc ); - fprintf (stderr, "do nothing yet"); + fprintf( stderr, "initialized\n" ); bInitialized = true; } catch (css::uno::Exception & e) { fprintf( stderr, "bootstrapping exception '%s'\n", diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk deleted file mode 100644 index e784a3a..0000000 --- a/smoketest/CppunitTest_liblibreoffice.mk +++ /dev/null @@ -1,33 +0,0 @@ -# -*- 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_CppunitTest_CppunitTest,liblibreoffice)) - -$(eval $(call gb_CppunitTest_abort_on_assertion,liblibreoffice)) - -$(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\ - smoketest/libtest \ -)) - -$(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\ - libreoffice \ -)) - -ifeq ($(OS),MACOSX) -liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS -else -liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program -endif - -$(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\ - -env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \ - -env:arg-testarg.smoketest.doc=$(OUTDIR)/bin/smoketestdoc.sxw \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/smoketest/Executable_libtest.mk b/smoketest/Executable_libtest.mk new file mode 100644 index 0000000..59ba80b --- /dev/null +++ b/smoketest/Executable_libtest.mk @@ -0,0 +1,47 @@ +# -*- 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,libtest)) + +$(eval $(call gb_Executable_set_include,libtest,\ + $$(INCLUDE) \ + -I$(SRCDIR)/desktop/inc \ +)) + +$(eval $(call gb_Executable_use_libraries,libtest,\ + libreoffice \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_Executable_add_libs,libtest,\ + -pthread \ +)) + +$(eval $(call gb_Executable_add_exception_objects,libtest,\ + smoketest/libtest \ +)) + +ifeq ($(OS),MACOSX) +liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS +else +liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program +endif +liblibreoffice_OWN_LD_PATH_DIR := $(liblibreoffice_SOFFICE_INST)/libolib +liblibreoffice_OWN_LD_SO := $(liblibreoffice_OWN_LD_PATH_DIR)/$(call gb_Library_get_linktargetname,libreoffice) + +$(liblibreoffice_OWN_LD_SO) : $(call gb_Library_get_target,libreoffice) + mkdir -p $(liblibreoffice_OWN_LD_PATH_DIR)/Library + cp -a $(call gb_Library_get_target,libreoffice) $(liblibreoffice_OWN_LD_SO) + +run_libtest: $(liblibreoffice_OWN_LD_SO) + $(gb_Helper_LIBRARY_PATH_VAR)=$${$(gb_Helper_LIBRARY_PATH_VAR):+$$$(gb_Helper_LIBRARY_PATH_VAR):}":$(liblibreoffice_OWN_LD_PATH_DIR)/Library" \ + $(call gb_LinkTarget_get_target,Executable/libtest) \ + $(liblibreoffice_SOFFICE_INST) $(OUTDIR)/bin/smoketestdoc.sxw \ + +# vim: set noet sw=4 ts=4: diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk index 9a2aa72..31efcce 100644 --- a/smoketest/Module_smoketest.mk +++ b/smoketest/Module_smoketest.mk @@ -42,9 +42,11 @@ $(eval $(call gb_Module_add_targets,smoketest,\ )) endif +ifeq ($(OS),LINUX) $(eval $(call gb_Module_add_check_targets,smoketest,\ - CppunitTest_liblibreoffice \ + Executable_libtest \ )) +endif $(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\ CppunitTest_smoketest \ diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx index 4e452a7..f3d207f 100644 --- a/smoketest/libtest.cxx +++ b/smoketest/libtest.cxx @@ -7,60 +7,32 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -// yuck / FIXME ... -#include "../desktop/inc/liblibreoffice.hxx" - +#include <stdio.h> #include <assert.h> +#include <liblibreoffice.hxx> -#include <sal/types.h> -#include <rtl/ustring.hxx> -#include <rtl/bootstrap.hxx> -#include "cppunit/TestAssert.h" -#include "cppunit/TestFixture.h" -#include "cppunit/extensions/HelperMacros.h" -#include "cppunit/plugin/TestPlugIn.h" - -class Test: public CppUnit::TestFixture { -public: - virtual void setUp(); - virtual void tearDown(); - -private: - CPPUNIT_TEST_SUITE(Test); - CPPUNIT_TEST(test); - CPPUNIT_TEST_SUITE_END(); - - void test(); -}; - -void Test::setUp() -{ -} -void Test::tearDown() -{ -} - -void Test::test() +int main (int argc, char **argv) { - rtl::OUString aArgSoffice; - rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice ); - OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 ); - fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() ); - LibLibreOffice *pOffice = lo_init( aInstall.getStr() ); - CPPUNIT_ASSERT( pOffice != NULL ); - - bool bInited = pOffice->initialize( aInstall.getStr() ); - CPPUNIT_ASSERT( bInited ); - - rtl::OUString aArgDoc; - rtl::Bootstrap::get( rtl::OUString( "arg-testarg.smoketest.doc" ), aArgDoc ); - OString aDoc = OUStringToOString ( aArgDoc, RTL_TEXTENCODING_UTF8 ); - fprintf ( stderr, "liblibreoffice doc arg: '%s'\n", aDoc.getStr() ); - pOffice->documentLoad ( aDoc.getStr() ); + if( argc < 2 ) + return -1; + LibLibreOffice *pOffice = lo_init( argv[1] ); + if( !pOffice ) + return -1; + // This separate init is lame I think. + if( !pOffice->initialize( argv[1] ) ) + { + fprintf( stderr, "failed to initialize\n" ); + return -1; + } + fprintf( stderr, "start to load document '%s'\n", argv[2] ); + LODocument *pDocument = pOffice->documentLoad( argv[2] ); + if( !pDocument ) + { + fprintf( stderr, "failed to load document '%s'\n", argv[2] ); + return -1; + } + fprintf( stderr, "all tests passed." ); + return 0; } -CPPUNIT_TEST_SUITE_REGISTRATION(Test); - -CPPUNIT_PLUGIN_IMPLEMENT(); - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/vcl/svapp.hxx b/vcl/inc/vcl/svapp.hxx index 9b4510e..b2c52ec 100644 --- a/vcl/inc/vcl/svapp.hxx +++ b/vcl/inc/vcl/svapp.hxx @@ -330,9 +330,8 @@ public: static const Link& GetFilterHdl(); static void EnableHeadlessMode( bool dialogsAreFatal ); - static sal_Bool IsHeadlessModeEnabled(); - - static bool IsHeadlessModeRequested(); + static sal_Bool IsHeadlessModeEnabled(); + static bool IsHeadlessModeRequested(); ///< check command line arguments for --headless static void ShowNativeErrorBox(const String& sTitle , diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index cba609d..14b33ea 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -1760,7 +1760,7 @@ bool Application::IsHeadlessModeRequested() for (sal_uInt32 i = 0; i < n; ++i) { rtl::OUString arg; rtl_getAppCommandArg(i, &arg.pData); - if ( arg == "--headless" ) { + if ( arg == "--headless" || arg == "-headless" ) { return true; } } diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx index 3d87977..2dbd37f 100644 --- a/vcl/unx/generic/plugadapt/salplug.cxx +++ b/vcl/unx/generic/plugadapt/salplug.cxx @@ -21,6 +21,7 @@ #include "osl/process.h" #include "rtl/ustrbuf.hxx" +#include "rtl/bootstrap.hxx" #include "salinst.hxx" #include "generic/gensys.h" @@ -198,31 +199,22 @@ static SalInstance* autodetect_plugin() return pInst; } -static SalInstance* check_headless_plugin() -{ - int nParams = osl_getCommandArgCount(); - OUString aParam; - for( int i = 0; i < nParams; i++ ) - { - osl_getCommandArg( i, &aParam.pData ); - if( aParam == "-headless" || aParam == "--headless" ) - { - return tryInstance("svp"); - } - } - return NULL; -} - SalInstance *CreateSalInstance() { - SalInstance* pInst = NULL; + SalInstance *pInst = NULL; + OUString aUsePlugin; static const char* pUsePlugin = getenv( "SAL_USE_VCLPLUGIN" ); + if( pUsePlugin ) + aUsePlugin = OUString::createFromAscii( pUsePlugin ); + else + rtl::Bootstrap::get( "SAL_USE_VCLPLUGIN", aUsePlugin ); - pInst = check_headless_plugin(); + if( Application::IsHeadlessModeRequested() ) + aUsePlugin = "svp"; - if( !pInst && pUsePlugin && *pUsePlugin ) - pInst = tryInstance( OUString::createFromAscii( pUsePlugin ), true ); + if( !aUsePlugin.isEmpty() ) + pInst = tryInstance( aUsePlugin ); if( ! pInst ) pInst = autodetect_plugin(); commit 08b6643eda69c1d4fc8a0b1277ffdd65834d5f46 Author: Jack Leigh <leigh...@gmx.se> Date: Tue Mar 5 16:47:03 2013 +0000 liblibo: test documentLoad method Change-Id: I7827a9b96e5a18b7f0b8b374a49ab96625d22d0a diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk index 8755fe8..e784a3a 100644 --- a/smoketest/CppunitTest_liblibreoffice.mk +++ b/smoketest/CppunitTest_liblibreoffice.mk @@ -27,6 +27,7 @@ endif $(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\ -env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \ + -env:arg-testarg.smoketest.doc=$(OUTDIR)/bin/smoketestdoc.sxw \ )) # vim: set noet sw=4 ts=4: diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx index cc71d08..4e452a7 100644 --- a/smoketest/libtest.cxx +++ b/smoketest/libtest.cxx @@ -51,6 +51,12 @@ void Test::test() bool bInited = pOffice->initialize( aInstall.getStr() ); CPPUNIT_ASSERT( bInited ); + + rtl::OUString aArgDoc; + rtl::Bootstrap::get( rtl::OUString( "arg-testarg.smoketest.doc" ), aArgDoc ); + OString aDoc = OUStringToOString ( aArgDoc, RTL_TEXTENCODING_UTF8 ); + fprintf ( stderr, "liblibreoffice doc arg: '%s'\n", aDoc.getStr() ); + pOffice->documentLoad ( aDoc.getStr() ); } CPPUNIT_TEST_SUITE_REGISTRATION(Test); commit f751be6fa0c097ad51e28a79fa91141bf3313d8f Author: Jack Leigh <leigh...@gmx.se> Date: Tue Mar 5 14:29:26 2013 +0000 liblibo: create XComponent for doc Change-Id: Ie07ac4a3e89a9a82a107612b81be18d3826c49e1 diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 0628b7f..de5788d 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -13,11 +13,14 @@ #include <tools/errinf.hxx> #include <osl/file.hxx> +#include <osl/process.h> #include <rtl/strbuf.hxx> #include <rtl/bootstrap.hxx> #include <cppuhelper/bootstrap.hxx> #include <comphelper/processfactory.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/frame/Desktop.hpp> #include <com/sun/star/lang/Locale.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> @@ -39,6 +42,19 @@ static uno::Reference<css::lang::XMultiComponentFactory> xFactory; LODocument * LibLibreOffice_Impl::documentLoad( const char *docUrl ) { + OUString sUrl = OUString::createFromAscii (docUrl); + OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl; + + uno::Reference < css::frame::XDesktop2 > xComponentLoader = + css::frame::Desktop::create(xContext); + + osl_getProcessWorkingDir(&sWorkingDir.pData); + osl::FileBase::getFileURLFromSystemPath(sUrl, sDocPathUrl); + osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl); + + uno::Reference < css::lang::XComponent > xComponent = xComponentLoader->loadComponentFromURL( + sAbsoluteDocUrl, OUString("_blank"), 0, + uno::Sequence < css::beans::PropertyValue >()); return NULL; } @@ -133,4 +149,3 @@ LibLibreOffice_Impl::~LibLibreOffice_Impl () } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ - commit af969873cb01e44aacfa34623ce1f0d51a62c895 Author: Michael Meeks <michael.me...@suse.com> Date: Tue Mar 5 16:40:01 2013 +0000 liblibo: better init code. Change-Id: I8757739960cb1c764a5a66bd67d34731e3dfbf31 diff --git a/desktop/inc/liblibreoffice.hxx b/desktop/inc/liblibreoffice.hxx index 74f6769..48c0a24 100644 --- a/desktop/inc/liblibreoffice.hxx +++ b/desktop/inc/liblibreoffice.hxx @@ -10,16 +10,15 @@ #ifndef _LIBLIBREOFFICE_HXX #define _LIBLIBREOFFICE_HXX -typedef int loboolean; typedef struct _LODocument LODocument; class LibLibreOffice { public: - virtual loboolean initialize (const char *installPath) = 0; + virtual bool initialize (const char *installPath) = 0; virtual LODocument *documentLoad (const char *url) = 0; - virtual loboolean documentSave (const char *url) = 0; + virtual bool documentSave (const char *url) = 0; virtual ~LibLibreOffice () {}; }; diff --git a/desktop/inc/liblibreoffice_impl.hxx b/desktop/inc/liblibreoffice_impl.hxx index d7686eb..3f7783e 100644 --- a/desktop/inc/liblibreoffice_impl.hxx +++ b/desktop/inc/liblibreoffice_impl.hxx @@ -12,16 +12,13 @@ #include "liblibreoffice.hxx" -typedef int loboolean; -typedef struct _LODocument LODocument; - class LibLibreOffice_Impl : public LibLibreOffice { public: - virtual loboolean initialize (const char *installPath); + virtual bool initialize (const char *installPath); virtual LODocument *documentLoad (const char *url); - virtual loboolean documentSave (const char *url); + virtual bool documentSave (const char *url); virtual ~LibLibreOffice_Impl (); }; diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 4b47ac6..0628b7f 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * @@ -42,7 +42,7 @@ LibLibreOffice_Impl::documentLoad( const char *docUrl ) return NULL; } -loboolean +bool LibLibreOffice_Impl::documentSave( const char * ) { return 1; @@ -73,16 +73,18 @@ aBasicErrorFunc( const OUString &rErr, const OUString &rAction ) static void initialize_uno( const rtl::OUString &aUserProfileURL ) { + xContext = cppu::defaultBootstrap_InitialComponentContext(); + fprintf( stderr, "Uno initialized %d\n", xContext.is() ); + xFactory = xContext->getServiceManager(); + xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW); + comphelper::setProcessServiceFactory(xSFactory); + // set UserInstallation to user profile dir in test/user-template rtl::Bootstrap aDefaultVars; aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL ); - - xContext = comphelper::getProcessComponentContext(); - xFactory = xContext->getServiceManager(); - xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW); } -loboolean +bool LibLibreOffice_Impl::initialize( const char *app_path ) { static bool bInitialized = false; @@ -122,6 +124,7 @@ extern "C" { LibLibreOffice *liblibreoffice_hook(void) { + fprintf( stderr, "create libreoffice object\n" ); return new LibLibreOffice_Impl(); } diff --git a/desktop/source/lib/shim.cxx b/desktop/source/lib/shim.cxx index 4c8e61d..546d0da 100644 --- a/desktop/source/lib/shim.cxx +++ b/desktop/source/lib/shim.cxx @@ -41,13 +41,14 @@ SAL_DLLPUBLIC_EXPORT LibLibreOffice *lo_init( const char *install_path ) fprintf( stderr, "failed to open library '%s'\n", imp_lib ); return NULL; } - free( imp_lib ); HookFunction *pSym = (HookFunction *) dlsym( dlhandle, "liblibreoffice_hook" ); if( !pSym ) { fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib ); return NULL; } + + free( imp_lib ); return pSym(); } diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk index 2cd3456..8755fe8 100644 --- a/smoketest/CppunitTest_liblibreoffice.mk +++ b/smoketest/CppunitTest_liblibreoffice.mk @@ -15,29 +15,16 @@ $(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\ smoketest/libtest \ )) -$(eval $(call gb_CppunitTest_use_external,liblibreoffice,boost_headers)) - -$(eval $(call gb_CppunitTest_use_api,liblibreoffice,\ - offapi \ - udkapi \ -)) - $(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\ - cppu \ - cppuhelper \ libreoffice \ - sal \ - unotest \ )) ifeq ($(OS),MACOSX) -liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS +liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS else -liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/program +liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program endif -$(eval $(call gb_CppunitTest_use_ure,liblibreoffice)) - $(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\ -env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \ )) diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx index 36c3a0c..cc71d08 100644 --- a/smoketest/libtest.cxx +++ b/smoketest/libtest.cxx @@ -46,7 +46,11 @@ void Test::test() rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice ); OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 ); fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() ); - assert (lo_init( aInstall.getStr() )); + LibLibreOffice *pOffice = lo_init( aInstall.getStr() ); + CPPUNIT_ASSERT( pOffice != NULL ); + + bool bInited = pOffice->initialize( aInstall.getStr() ); + CPPUNIT_ASSERT( bInited ); } CPPUNIT_TEST_SUITE_REGISTRATION(Test); commit 07352f07ce40ef40e9b73fd05aa4f9c5eac38290 Author: Jack Leigh <leigh...@gmx.se> Date: Tue Mar 5 16:19:58 2013 +0000 liblibo: move to C++ interface. Change-Id: Ie14a9446abd9524604feddf811d5373a26a30cbd diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk index a40bbd7..96b18a1 100644 --- a/desktop/Library_libreoffice.mk +++ b/desktop/Library_libreoffice.mk @@ -14,6 +14,12 @@ $(eval $(call gb_Library_set_include,libreoffice,\ -I$(SRCDIR)/desktop/inc \ )) +$(eval $(call gb_Library_add_libs,libreoffice,\ + $(if $(filter $(OS),LINUX), \ + -ldl \ + ) \ +)) + $(eval $(call gb_Library_use_libraries,libreoffice,\ $(gb_UWINAPI) \ )) diff --git a/desktop/inc/liblibreoffice.h b/desktop/inc/liblibreoffice.h deleted file mode 100644 index dde50ce..0000000 --- a/desktop/inc/liblibreoffice.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- 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/. - */ - -/* - * A simple C API to setup and use libreoffice - */ -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - int errno; - char *message; -} LOError; - -typedef int loboolean; -typedef struct _LODocument LODocument; - -loboolean lo_initialize (const char *install_path); - -void lo_error_free (LOError *error); -LOError *lo_error_new (int errno, const char *message); - -LODocument *lo_document_load (const char *url, LOError **opt_error); -loboolean lo_document_save (const char *url, LOError **opt_error); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ - diff --git a/desktop/inc/liblibreoffice.hxx b/desktop/inc/liblibreoffice.hxx new file mode 100644 index 0000000..74f6769 --- /dev/null +++ b/desktop/inc/liblibreoffice.hxx @@ -0,0 +1,30 @@ +/* -*- 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/. + */ + +#ifndef _LIBLIBREOFFICE_HXX +#define _LIBLIBREOFFICE_HXX + +typedef int loboolean; +typedef struct _LODocument LODocument; + +class LibLibreOffice +{ +public: + virtual loboolean initialize (const char *installPath) = 0; + + virtual LODocument *documentLoad (const char *url) = 0; + virtual loboolean documentSave (const char *url) = 0; + + virtual ~LibLibreOffice () {}; +}; + +LibLibreOffice *lo_init (const char *install_path); + +#endif +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/desktop/inc/liblibreoffice_impl.hxx b/desktop/inc/liblibreoffice_impl.hxx new file mode 100644 index 0000000..d7686eb --- /dev/null +++ b/desktop/inc/liblibreoffice_impl.hxx @@ -0,0 +1,30 @@ +/* -*- 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/. + */ + +#ifndef _LIBLIBREOFFICE_IMPL_HXX +#define _LIBLIBREOFFICE_IMPL_HXX + +#include "liblibreoffice.hxx" + +typedef int loboolean; +typedef struct _LODocument LODocument; + +class LibLibreOffice_Impl : public LibLibreOffice +{ +public: + virtual loboolean initialize (const char *installPath); + + virtual LODocument *documentLoad (const char *url); + virtual loboolean documentSave (const char *url); + + virtual ~LibLibreOffice_Impl (); +}; + +#endif +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 5aab66b..4b47ac6 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -7,9 +7,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include <liblibreoffice_impl.hxx> + #include <stdio.h> -#include <liblibreoffice.h> #include <tools/errinf.hxx> #include <osl/file.hxx> #include <rtl/strbuf.hxx> @@ -35,25 +36,14 @@ static uno::Reference<css::uno::XComponentContext> xContext; static uno::Reference<css::lang::XMultiServiceFactory> xSFactory; static uno::Reference<css::lang::XMultiComponentFactory> xFactory; -SAL_DLLPUBLIC_EXPORT void -lo_error_free( LOError * ) -{ -} - -SAL_DLLPUBLIC_EXPORT LOError * -lo_error_new( int, const char * ) +LODocument * +LibLibreOffice_Impl::documentLoad( const char *docUrl ) { return NULL; } -SAL_DLLPUBLIC_EXPORT LODocument * -lo_document_load( const char *, LOError ** ) -{ - return NULL; -} - -SAL_DLLPUBLIC_EXPORT loboolean -lo_document_save( const char *, LOError ** ) +loboolean +LibLibreOffice_Impl::documentSave( const char * ) { return 1; } @@ -92,8 +82,8 @@ initialize_uno( const rtl::OUString &aUserProfileURL ) xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW); } -SAL_DLLPUBLIC_EXPORT loboolean -lo_initialize( const char *app_path ) +loboolean +LibLibreOffice_Impl::initialize( const char *app_path ) { static bool bInitialized = false; if( bInitialized ) @@ -132,7 +122,11 @@ extern "C" { LibLibreOffice *liblibreoffice_hook(void) { - return new LibLibreOffice(); + return new LibLibreOffice_Impl(); +} + +LibLibreOffice_Impl::~LibLibreOffice_Impl () +{ } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/desktop/source/lib/shim.cxx b/desktop/source/lib/shim.cxx index c57803e..4c8e61d 100644 --- a/desktop/source/lib/shim.cxx +++ b/desktop/source/lib/shim.cxx @@ -9,8 +9,12 @@ #ifdef LINUX +#include <stdio.h> +#include <string.h> + +#include <osl/module.h> #include <sal/types.h> -#include <liblibreoffice.h> +#include <liblibreoffice.hxx> #include <dlfcn.h> #ifdef AIX @@ -23,11 +27,11 @@ extern "C" { typedef LibLibreOffice *(HookFunction)(void); }; -extern LibLibreOffice *lo_init( const char *install_path ) +SAL_DLLPUBLIC_EXPORT LibLibreOffice *lo_init( const char *install_path ) { if( !install_path ) return NULL; - char *impl_lib = malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 ); + char *imp_lib = (char *) malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 ); strcpy( imp_lib, install_path ); strcat( imp_lib, "/" ); strcat( imp_lib, TARGET_LIB ); @@ -39,7 +43,7 @@ extern LibLibreOffice *lo_init( const char *install_path ) } free( imp_lib ); - HookFunction *pSym = dlsym( dlhandle, "liblibreoffice_hook" ); + HookFunction *pSym = (HookFunction *) dlsym( dlhandle, "liblibreoffice_hook" ); if( !pSym ) { fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib ); return NULL; diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx index 39ab01b..36c3a0c 100644 --- a/smoketest/libtest.cxx +++ b/smoketest/libtest.cxx @@ -8,7 +8,9 @@ */ // yuck / FIXME ... -#include "../desktop/inc/liblibreoffice.h" +#include "../desktop/inc/liblibreoffice.hxx" + +#include <assert.h> #include <sal/types.h> #include <rtl/ustring.hxx> @@ -44,7 +46,7 @@ void Test::test() rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice ); OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 ); fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() ); - lo_initialize( aInstall.getStr() ); + assert (lo_init( aInstall.getStr() )); } CPPUNIT_TEST_SUITE_REGISTRATION(Test); commit 8887de72c184bec6225a952ec90433ae1b7a5b26 Author: Michael Meeks <michael.me...@suse.com> Date: Tue Mar 5 13:16:36 2013 +0000 liblibo: create initial liblibreoffice. bootstrap libreoffice, start a dummy test-harness: can't use CppUnit or link to any URE / LibreOffice libraries. Change-Id: I855b640557f93959749e966a2d8e5e577fd84574 diff --git a/Repository.mk b/Repository.mk index a7b1706..e3ea69b 100644 --- a/Repository.mk +++ b/Repository.mk @@ -472,6 +472,7 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ hsqldb \ index_data \ java_uno_accessbridge \ + libreoffice \ localedata_en \ localedata_es \ localedata_euro \ diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk new file mode 100644 index 0000000..a40bbd7 --- /dev/null +++ b/desktop/Library_libreoffice.mk @@ -0,0 +1,25 @@ +# -*- 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,libreoffice)) + +$(eval $(call gb_Library_set_include,libreoffice,\ + $$(INCLUDE) \ + -I$(SRCDIR)/desktop/inc \ +)) + +$(eval $(call gb_Library_use_libraries,libreoffice,\ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_Library_add_exception_objects,libreoffice,\ + desktop/source/lib/shim \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/desktop/Library_sofficeapp.mk b/desktop/Library_sofficeapp.mk index 2a635b5..5ae66d2 100644 --- a/desktop/Library_sofficeapp.mk +++ b/desktop/Library_sofficeapp.mk @@ -90,6 +90,11 @@ $(eval $(call gb_Library_add_exception_objects,sofficeapp,\ desktop/source/migration/migration \ )) +# liblibreoffice bits +$(eval $(call gb_Library_add_exception_objects,sofficeapp,\ + desktop/source/lib/init \ +)) + ifeq ($(ENABLE_TELEPATHY),TRUE) $(eval $(call gb_Library_use_libraries,sofficeapp,tubes)) endif diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk index 538553a..d97bff3 100644 --- a/desktop/Module_desktop.mk +++ b/desktop/Module_desktop.mk @@ -33,6 +33,7 @@ $(eval $(call gb_Module_add_targets,desktop,\ AllLangResTarget_dkt \ Library_deployment \ Library_deploymentmisc \ + Library_libreoffice \ Library_offacc \ Library_sofficeapp \ Library_spl \ diff --git a/desktop/inc/liblibreoffice.h b/desktop/inc/liblibreoffice.h new file mode 100644 index 0000000..dde50ce --- /dev/null +++ b/desktop/inc/liblibreoffice.h @@ -0,0 +1,38 @@ +/* -*- 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/. + */ + +/* + * A simple C API to setup and use libreoffice + */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int errno; + char *message; +} LOError; + +typedef int loboolean; +typedef struct _LODocument LODocument; + +loboolean lo_initialize (const char *install_path); + +void lo_error_free (LOError *error); +LOError *lo_error_new (int errno, const char *message); + +LODocument *lo_document_load (const char *url, LOError **opt_error); +loboolean lo_document_save (const char *url, LOError **opt_error); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ + diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx new file mode 100644 index 0000000..5aab66b --- /dev/null +++ b/desktop/source/lib/init.cxx @@ -0,0 +1,139 @@ +/* -*- 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 <stdio.h> + +#include <liblibreoffice.h> +#include <tools/errinf.hxx> +#include <osl/file.hxx> +#include <rtl/strbuf.hxx> +#include <rtl/bootstrap.hxx> +#include <cppuhelper/bootstrap.hxx> +#include <comphelper/processfactory.hxx> + +#include <com/sun/star/lang/Locale.hpp> +#include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/ucb/XContentProvider.hpp> +#include <com/sun/star/ucb/XUniversalContentBroker.hpp> + +#include <vcl/svapp.hxx> +#include <tools/resmgr.hxx> +#include <vcl/graphicfilter.hxx> +#include <unotools/syslocaleoptions.hxx> + +using namespace ::com::sun::star; + +// Wonder global state ... +static uno::Reference<css::uno::XComponentContext> xContext; +static uno::Reference<css::lang::XMultiServiceFactory> xSFactory; +static uno::Reference<css::lang::XMultiComponentFactory> xFactory; + +SAL_DLLPUBLIC_EXPORT void +lo_error_free( LOError * ) +{ +} + +SAL_DLLPUBLIC_EXPORT LOError * +lo_error_new( int, const char * ) +{ + return NULL; +} + +SAL_DLLPUBLIC_EXPORT LODocument * +lo_document_load( const char *, LOError ** ) +{ + return NULL; +} + +SAL_DLLPUBLIC_EXPORT loboolean +lo_document_save( const char *, LOError ** ) +{ + return 1; +} + +static void +force_c_locale( void ) +{ + // force locale (and resource files loaded) to en-US + css::lang::Locale aLocale( "en", "US", ""); + ResMgr::SetDefaultLocale( aLocale ); + SvtSysLocaleOptions aLocalOptions; + OUString aLangISO( "en-US" ); + aLocalOptions.SetLocaleConfigString( aLangISO ); + aLocalOptions.SetUILocaleConfigString( aLangISO ); +} + +static void +aBasicErrorFunc( const OUString &rErr, const OUString &rAction ) +{ + OStringBuffer aErr( "Unexpected dialog: " ); + aErr.append( OUStringToOString( rAction, RTL_TEXTENCODING_ASCII_US ) ); + aErr.append( " Error: " ); + aErr.append( OUStringToOString( rErr, RTL_TEXTENCODING_ASCII_US ) ); + fprintf( stderr, "Unexpected basic error dialog '%s'\n", aErr.getStr() ); +} + +static void +initialize_uno( const rtl::OUString &aUserProfileURL ) +{ + // set UserInstallation to user profile dir in test/user-template + rtl::Bootstrap aDefaultVars; + aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL ); + + xContext = comphelper::getProcessComponentContext(); + xFactory = xContext->getServiceManager(); + xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW); +} + +SAL_DLLPUBLIC_EXPORT loboolean +lo_initialize( const char *app_path ) +{ + static bool bInitialized = false; + if( bInitialized ) + return true; + + if( !app_path ) + return false; + + OUString aAppPath( app_path, strlen( app_path ), RTL_TEXTENCODING_UTF8 ); + OUString aAppURL; + if( osl::FileBase::getFileURLFromSystemPath( aAppPath, aAppURL ) != + osl::FileBase::E_None ) + return false; + + try { + initialize_uno( aAppURL + "../registry" ); + force_c_locale(); + InitVCL(); + if (Application::IsHeadlessModeRequested()) + Application::EnableHeadlessMode(true); + + ErrorHandler::RegisterDisplay( aBasicErrorFunc ); + + fprintf (stderr, "do nothing yet"); + bInitialized = true; + } catch (css::uno::Exception & e) { + fprintf( stderr, "bootstrapping exception '%s'\n", + OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() ); + } + return bInitialized; +} + +extern "C" { + SAL_DLLPUBLIC_EXPORT LibLibreOffice *liblibreoffice_hook(void); +} + +LibLibreOffice *liblibreoffice_hook(void) +{ + return new LibLibreOffice(); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ + diff --git a/desktop/source/lib/shim.cxx b/desktop/source/lib/shim.cxx new file mode 100644 index 0000000..c57803e --- /dev/null +++ b/desktop/source/lib/shim.cxx @@ -0,0 +1,52 @@ +/* -*- 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/. + */ + +#ifdef LINUX + +#include <sal/types.h> +#include <liblibreoffice.h> + +#include <dlfcn.h> +#ifdef AIX +# include <sys/ldr.h> +#endif + +#define TARGET_LIB SAL_MODULENAME( "sofficeapp" ) + +extern "C" { + typedef LibLibreOffice *(HookFunction)(void); +}; + +extern LibLibreOffice *lo_init( const char *install_path ) +{ + if( !install_path ) + return NULL; + char *impl_lib = malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 ); + strcpy( imp_lib, install_path ); + strcat( imp_lib, "/" ); + strcat( imp_lib, TARGET_LIB ); + void *dlhandle = dlopen( imp_lib, RTLD_LAZY ); + if( !dlhandle ) + { + fprintf( stderr, "failed to open library '%s'\n", imp_lib ); + return NULL; + } + free( imp_lib ); + + HookFunction *pSym = dlsym( dlhandle, "liblibreoffice_hook" ); + if( !pSym ) { + fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib ); + return NULL; + } + return pSym(); +} + +#endif // LINUX - port me ! + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk new file mode 100644 index 0000000..2cd3456 --- /dev/null +++ b/smoketest/CppunitTest_liblibreoffice.mk @@ -0,0 +1,45 @@ +# -*- 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_CppunitTest_CppunitTest,liblibreoffice)) + +$(eval $(call gb_CppunitTest_abort_on_assertion,liblibreoffice)) + +$(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\ + smoketest/libtest \ +)) + +$(eval $(call gb_CppunitTest_use_external,liblibreoffice,boost_headers)) + +$(eval $(call gb_CppunitTest_use_api,liblibreoffice,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\ + cppu \ + cppuhelper \ + libreoffice \ + sal \ + unotest \ +)) + +ifeq ($(OS),MACOSX) +liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS +else +liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/program +endif + +$(eval $(call gb_CppunitTest_use_ure,liblibreoffice)) + +$(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\ + -env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk index 9de8a44..9a2aa72 100644 --- a/smoketest/Module_smoketest.mk +++ b/smoketest/Module_smoketest.mk @@ -42,6 +42,10 @@ $(eval $(call gb_Module_add_targets,smoketest,\ )) endif +$(eval $(call gb_Module_add_check_targets,smoketest,\ + CppunitTest_liblibreoffice \ +)) + $(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\ CppunitTest_smoketest \ )) diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx new file mode 100644 index 0000000..39ab01b --- /dev/null +++ b/smoketest/libtest.cxx @@ -0,0 +1,54 @@ +/* -*- 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/. + */ + +// yuck / FIXME ... +#include "../desktop/inc/liblibreoffice.h" + +#include <sal/types.h> +#include <rtl/ustring.hxx> +#include <rtl/bootstrap.hxx> +#include "cppunit/TestAssert.h" +#include "cppunit/TestFixture.h" +#include "cppunit/extensions/HelperMacros.h" +#include "cppunit/plugin/TestPlugIn.h" + +class Test: public CppUnit::TestFixture { +public: + virtual void setUp(); + virtual void tearDown(); + +private: + CPPUNIT_TEST_SUITE(Test); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); + + void test(); +}; + +void Test::setUp() +{ +} +void Test::tearDown() +{ +} + +void Test::test() +{ + rtl::OUString aArgSoffice; + rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice ); + OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 ); + fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() ); + lo_initialize( aInstall.getStr() ); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(Test); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits