desktop/Library_libreoffice.mk | 21 ---------------- desktop/Library_sofficeapp.mk | 5 +++ desktop/source/lib/init.cxx | 9 +++++++ desktop/source/lib/shim.cxx | 52 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 20 deletions(-)
New commits: commit d712f7e5433cc3e1b4d5e5c5c798b882ec99e517 Author: Michael Meeks <michael.me...@suse.com> Date: Tue Mar 5 15:21:42 2013 +0000 liblibo: re-factor to have a completely dependency-free client. Change-Id: I6217019dbee9b53b9638efd61b842db2540da0e2 diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk index bea7f2f..a40bbd7 100644 --- a/desktop/Library_libreoffice.mk +++ b/desktop/Library_libreoffice.mk @@ -14,31 +14,12 @@ $(eval $(call gb_Library_set_include,libreoffice,\ -I$(SRCDIR)/desktop/inc \ )) -$(eval $(call gb_Library_use_external,libreoffice,boost_headers)) - -$(eval $(call gb_Library_use_sdk_api,libreoffice)) - $(eval $(call gb_Library_use_libraries,libreoffice,\ - comphelper \ - cppu \ - cppuhelper \ - deploymentmisc \ - i18nisolang1 \ - sal \ - salhelper \ - sfx \ - svl \ - svt \ - tk \ - tl \ - ucbhelper \ - utl \ - vcl \ $(gb_UWINAPI) \ )) $(eval $(call gb_Library_add_exception_objects,libreoffice,\ - desktop/source/lib/init \ + 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/source/lib/init.cxx b/desktop/source/lib/init.cxx index 8f96dbe..5aab66b 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -126,5 +126,14 @@ lo_initialize( const char *app_path ) 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: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits