cppuhelper/source/shlib.cxx | 25 ++- ios/CustomTarget_Viewer_app.mk | 101 +++++++++++++-- ios/experimental/Viewer/.gitignore | 2 ios/experimental/Viewer/Viewer.xcodeproj/project.pbxproj | 4 ios/experimental/Viewer/Viewer/Icon-72.png |binary ios/experimental/Viewer/Viewer/lo-viewer.mm | 92 ++++--------- sal/rtl/source/bootstrap.cxx | 8 + solenv/gbuild/platform/IOS_ARM_GCC.mk | 2 vcl/ios/source/app/salinst.cxx | 41 ------ 9 files changed, 153 insertions(+), 122 deletions(-)
New commits: commit 4a11f5c28a2d7b4d50d67f26cba889169977a0ce Author: Tor Lillqvist <t...@iki.fi> Date: Sat Jan 5 23:13:49 2013 +0200 More hacking on iOS stuff Get the app bundle directory from Xcode's SCRIPT_OUTPUT_FILE_0. Copy .rdb, registry, .res files, set up the various rc files. Don't list a bunch of .component files on the command line, surely that is not sane. Change-Id: I6fb8bd4bea8d5afd30900daa1b916defb894e78c diff --git a/ios/CustomTarget_Viewer_app.mk b/ios/CustomTarget_Viewer_app.mk index 36cf8c5..9af7a49 100644 --- a/ios/CustomTarget_Viewer_app.mk +++ b/ios/CustomTarget_Viewer_app.mk @@ -48,13 +48,85 @@ endif ifneq ($(SCRIPT_OUTPUT_FILE_0),) # When run from Xcode, we move the Viewer executable from solver into -# the Viewer.app directory that Xcode uses. +# the Viewer.app directory that Xcode uses. We also set up/copy all +# the run-time configuration etc files that the app needs. $(call gb_CustomTarget_get_target,ios/Viewer_app) : $(SCRIPT_OUTPUT_FILE_0) +appdir=$(dir $(SCRIPT_OUTPUT_FILE_0)) +buildid=$(shell git log -1 --format=%H) + $(SCRIPT_OUTPUT_FILE_0) : $(call gb_Executable_get_target,Viewer) $(call gb_Output_announce,$@,fii,APP,2) - mkdir -p `dirname $(SCRIPT_OUTPUT_FILE_0)` + mkdir -p $(appdir)/ure mv $(call gb_Executable_get_target,Viewer) $(SCRIPT_OUTPUT_FILE_0) +# +# Copy rdb files +# + cp $(OUTDIR)/bin/types.rdb $(appdir) + cp $(OUTDIR)/bin/ure/types.rdb $(appdir)/ure + cp $(OUTDIR)/bin/offapi.rdb $(appdir) + cp $(OUTDIR)/xml/services.rdb $(appdir) + cp $(OUTDIR)/xml/ure/services.rdb $(appdir)/ure +# +# Copy "registry" files +# + mkdir -p $(appdir)/registry/modules $(appdir)/registry/res + cp $(OUTDIR)/xml/*.xcd $(appdir)/registry + mv $(appdir)/registry/fcfg_langpack_en-US.xcd $(appdir)/registry/res + cp -R $(OUTDIR)/xml/registry/* $(appdir)/registry +# +# Copy .res files +# +# program/resource is hardcoded in tools/source/rc/resmgr.cxx. Sure, +# we could set STAR_RESOURCE_PATH instead. sigh... +# + mkdir -p $(appdir)/program/resource + cp $(OUTDIR)/bin/*en-US.res $(appdir)/program/resource +# +# Set up rc, the "inifile". See getIniFileName_Impl(). +# + ( \ + echo '[Bootstrap]' && \ + echo 'URE_BOOTSTRAP=file://$$APP_DATA_DIR/fundamentalrc' && \ + echo 'HOME=$$APP_DATA_DIR/tmp' && \ + : ) > $(appdir)/rc +# +# Set up fundamentalrc, unorc, bootstraprc and versionrc. +# +# Do we really need all these? +# + ( \ + echo '[Bootstrap]' && \ + echo 'BRAND_BASE_DIR=file://$$APP_DATA_DIR' && \ + echo 'CONFIGURATION_LAYERS=xcsxcu:$${BRAND_BASE_DIR}/registry module:$${BRAND_BASE_DIR}/registry/modules res:$${BRAND_BASE_DIR}/registry' && \ + : ) > $(appdir)/fundamentalrc +# + ( \ + echo '[Bootstrap]' && \ + : UNO_TYPES and UNO_SERVICES are set up in lo-viewer.mm, is that sane? && \ + : ) > $(appdir)/unorc +# +# bootstraprc must be in $BRAND_BASE_DIR/program +# + mkdir -p $(appdir)/program + ( \ + echo '[Bootstrap]' && \ + echo 'InstallMode=<installmode>' && \ + echo 'ProductKey=LibreOffice Viewer $(PRODUCTVERSION)' && \ + echo 'UserInstallation=file://$$APP_DATA_DIR' && \ + : ) > $(appdir)/program/bootstraprc +# +# Is this really needed? +# + ( \ + echo '[Version]' && \ + echo 'AllLanguages=en-US' && \ + echo 'BuildVersion=' && \ + echo 'buildid=$(buildid)' && \ + echo 'ProductBuildid=3' && \ + echo 'ProductMajor=360' && \ + echo 'ProductMinor=1' && \ + : ) > $(appdir)/program/versionrc else # When run just from the command line, we don't have any app bundle to diff --git a/ios/experimental/Viewer/Viewer/lo-viewer.mm b/ios/experimental/Viewer/Viewer/lo-viewer.mm index a40cb78..616f136 100644 --- a/ios/experimental/Viewer/Viewer/lo-viewer.mm +++ b/ios/experimental/Viewer/Viewer/lo-viewer.mm @@ -13,6 +13,7 @@ #import <UIKit/UIKit.h> #include <postmac.h> +#include <comphelper/processfactory.hxx> #include <cppuhelper/bootstrap.hxx> #include <osl/detail/ios-bootstrap.h> #include <osl/process.h> @@ -21,14 +22,12 @@ #include <com/sun/star/bridge/XUnoUrlResolver.hpp> #include <com/sun/star/frame/XComponentLoader.hpp> #include <com/sun/star/lang/XMultiComponentFactory.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/registry/XSimpleRegistry.hpp> -using namespace com::sun::star::uno; -using namespace com::sun::star::lang; -using namespace com::sun::star::beans; -using namespace com::sun::star::bridge; -using namespace com::sun::star::frame; -using namespace com::sun::star::registry; +#include <vcl/svapp.hxx> + +using namespace com::sun::star; using ::rtl::OUString; using ::rtl::OUStringToOString; @@ -122,15 +121,10 @@ lo_get_libmap(void) void lo_initialize(void) { - // See unotest/source/cpp/bootstrapfixturebase.cxx - const char *app_root = [[[NSBundle mainBundle] bundlePath] UTF8String]; - setenv("SRC_ROOT", app_root, 1); - setenv("OUTDIR_FOR_BUILD", app_root, 1); - - setenv("SAL_LOG", "yes", 1); + setenv("SAL_LOG", "+WARN+INFO", 1); const char *argv[] = { - "Viewer", + "placeholder-exe", "-env:URE_INTERNAL_LIB_DIR=file:///", "placeholder-uno-types", "placeholder-uno-services" @@ -138,65 +132,31 @@ lo_initialize(void) const int argc = sizeof(argv)/sizeof(*argv); + argv[0] = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: @"Viewer"] UTF8String]; + NSString *app_root_escaped = [[[NSBundle mainBundle] bundlePath] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSString *uno_types = @"-env:UNO_TYPES="; uno_types = [uno_types stringByAppendingString: @"file://"]; - uno_types = [uno_types stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"udkapi.rdb"]]; + uno_types = [uno_types stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"ure/types.rdb"]]; - uno_types = [uno_types stringByAppendingString: @" "]; - uno_types = [uno_types stringByAppendingString: @"file://"]; + uno_types = [uno_types stringByAppendingString: @" file://"]; uno_types = [uno_types stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"types.rdb"]]; - uno_types = [uno_types stringByAppendingString: @" "]; - uno_types = [uno_types stringByAppendingString: @"file://"]; - uno_types = [uno_types stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"ure/types.rdb"]]; + uno_types = [uno_types stringByAppendingString: @" file://"]; + uno_types = [uno_types stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"offapi.rdb"]]; assert(strcmp(argv[argc-2], "placeholder-uno-types") == 0); argv[argc-2] = [uno_types UTF8String]; NSString *uno_services = @"-env:UNO_SERVICES="; - const char *services[] = { - "services.rdb", - "ComponentTarget/basic/util/sb.component", - "ComponentTarget/chart2/source/controller/chartcontroller.component", - "ComponentTarget/chart2/source/chartcore.component", - "ComponentTarget/comphelper/util/comphelp.component", - "ComponentTarget/eventattacher/source/evtatt.component", - "ComponentTarget/fileaccess/source/fileacc.component", - "ComponentTarget/filter/source/config/cache/filterconfig1.component", - "ComponentTarget/oox/util/oox.component", - "ComponentTarget/package/source/xstor/xstor.component", - "ComponentTarget/package/util/package2.component", - "ComponentTarget/sax/source/expatwrap/expwrap.component", - "ComponentTarget/sax/source/fastparser/fastsax.component", - "ComponentTarget/sc/util/sc.component", - "ComponentTarget/sc/util/scfilt.component", - "ComponentTarget/scaddins/source/analysis/analysis.component", - "ComponentTarget/scaddins/source/datefunc/date.component", - "ComponentTarget/sot/util/sot.component", - "ComponentTarget/svl/util/svl.component", - "ComponentTarget/toolkit/util/tk.component", - "ComponentTarget/ucb/source/ucp/tdoc/ucptdoc1.component", - "ComponentTarget/unotools/util/utl.component", - "ComponentTarget/unoxml/source/rdf/unordf.component", - "ComponentTarget/framework/util/fwk.component", - "ComponentTarget/i18npool/util/i18npool.component", - "ComponentTarget/sfx2/util/sfx.component", - "ComponentTarget/unoxml/source/service/unoxml.component", - "ComponentTarget/configmgr/source/configmgr.component", - "ComponentTarget/ucb/source/core/ucb1.component", - "ComponentTarget/ucb/source/ucp/file/ucpfile1.component" - }; + uno_services = [uno_services stringByAppendingString: @"file://"]; + uno_services = [uno_services stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"ure/services.rdb"]]; - for (unsigned i = 0; i < sizeof(services)/sizeof(services[0]); i++) { - uno_services = [uno_services stringByAppendingString: @"file://"]; - uno_services = [uno_services stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: [NSString stringWithUTF8String: services[i]]]]; - if (i < sizeof(services)/sizeof(services[0]) - 1) - uno_services = [uno_services stringByAppendingString: @" "]; - } + uno_services = [uno_services stringByAppendingString: @" file://"]; + uno_services = [uno_services stringByAppendingString: [app_root_escaped stringByAppendingPathComponent: @"services.rdb"]]; assert(strcmp(argv[argc-1], "placeholder-uno-services") == 0); argv[argc-1] = [uno_services UTF8String]; @@ -205,15 +165,21 @@ lo_initialize(void) try { - Reference< XComponentContext > xComponentContext(::cppu::defaultBootstrap_InitialComponentContext()); + uno::Reference< uno::XComponentContext > xContext(::cppu::defaultBootstrap_InitialComponentContext()); + + uno::Reference< lang::XMultiComponentFactory > xFactory( xContext->getServiceManager() ); + + uno::Reference< lang::XMultiServiceFactory > xSM( xFactory, uno::UNO_QUERY_THROW ); + + comphelper::setProcessServiceFactory( xSM ); - Reference< XMultiComponentFactory > xMultiComponentFactoryClient( xComponentContext->getServiceManager() ); + InitVCL(); - Reference< XInterface > xInterface = - xMultiComponentFactoryClient->createInstanceWithContext( OUString("com.sun.star.frame.Desktop"), - xComponentContext ); + uno::Reference< uno::XInterface > xInterface = + xFactory->createInstanceWithContext( "com.sun.star.frame.Desktop", + xContext ); } - catch (Exception e) { + catch ( uno::Exception e ) { SAL_WARN("Viewer", e.Message); } } commit 392510d7e483e8c181540dfdbabf4de53e4dcbe1 Author: Tor Lillqvist <t...@iki.fi> Date: Sat Jan 5 23:11:12 2013 +0200 UNO components have the "lib" prefix only on Android That they do is a leftover hack from before we started using the DISABLE_DYNLOADING thing on Android, it isn't actually necessary any more. Earlier when the UNO components were actually dynamic libraries on Android (too, as on desktop OSes), they *had* to have names starting with "lib" or they would be silently skipped when packaging. Change-Id: I11a4689f316e1ffb640a5c3110c63296d2833a84 diff --git a/cppuhelper/source/shlib.cxx b/cppuhelper/source/shlib.cxx index 348b970..acc4253 100644 --- a/cppuhelper/source/shlib.cxx +++ b/cppuhelper/source/shlib.cxx @@ -530,20 +530,33 @@ Reference< XInterface > SAL_CALL loadSharedLibComponentFactory( { "bootstrap.uno" SAL_DLLEXTENSION, bootstrap_component_getFactory }, { "bootstrap.uno.a", bootstrap_component_getFactory }, { "libbootstrap.uno.a", bootstrap_component_getFactory }, - // The rest seems to consistently have a "lib" prefix now + + // The .uno ones seems to consistently have a "lib" prefix now for Android, + // but not iOS, hmm. +#ifdef ANDROID { "libconfigmgr.uno.a", configmgr_component_getFactory }, - { "libcomphelp" CPPU_STRINGIFY(CPPU_ENV) ".a", comphelp_component_getFactory }, { "libexpwrap.uno.a", expwrap_component_getFactory }, { "libfastsax.uno.a", fastsax_component_getFactory }, - { "libfilterconfiglo.a", filterconfig1_component_getFactory }, - { "libfwklo.a", fwk_component_getFactory }, { "libi18npool.uno.a", i18npool_component_getFactory }, { "libintrospection.uno.a", introspection_component_getFactory }, { "liblocalebe1.uno.a", localebe1_component_getFactory }, - { "libpackage2.a", package2_component_getFactory }, { "libreflection.uno.a", reflection_component_getFactory }, - { "libsfxlo.a", sfx_component_getFactory }, { "libstocservices.uno.a", stocservices_component_getFactory }, +#else + { "configmgr.uno.a", configmgr_component_getFactory }, + { "expwrap.uno.a", expwrap_component_getFactory }, + { "fastsax.uno.a", fastsax_component_getFactory }, + { "i18npool.uno.a", i18npool_component_getFactory }, + { "introspection.uno.a", introspection_component_getFactory }, + { "localebe1.uno.a", localebe1_component_getFactory }, + { "reflection.uno.a", reflection_component_getFactory }, + { "stocservices.uno.a", stocservices_component_getFactory }, +#endif + { "libcomphelp" CPPU_STRINGIFY(CPPU_ENV) ".a", comphelp_component_getFactory }, + { "libfilterconfiglo.a", filterconfig1_component_getFactory }, + { "libfwklo.a", fwk_component_getFactory }, + { "libpackage2.a", package2_component_getFactory }, + { "libsfxlo.a", sfx_component_getFactory }, { "libsvllo.a", svl_component_getFactory }, { "libtklo.a", tk_component_getFactory }, { "libucb1.a", ucb_component_getFactory }, commit f3fa6d32e0698b99abfc00888a75590693e1d386 Author: Tor Lillqvist <t...@iki.fi> Date: Sat Jan 5 23:10:03 2013 +0200 I don't think InitSalMain() needs to do anything on iOS Change-Id: Ib59f9cf7c60796fd091de64fabdd6c10a3fec5e5 diff --git a/vcl/ios/source/app/salinst.cxx b/vcl/ios/source/app/salinst.cxx index ed792db..0e5c69b 100644 --- a/vcl/ios/source/app/salinst.cxx +++ b/vcl/ios/source/app/salinst.cxx @@ -173,46 +173,7 @@ void DeInitSalData() void InitSalMain() { - rtl::OUString urlWorkDir; - rtl_uString *sysWorkDir = NULL; - if (tools::getProcessWorkingDir(urlWorkDir)) - { - oslFileError err2 = osl_getSystemPathFromFileURL(urlWorkDir.pData, &sysWorkDir); - if (err2 == osl_File_E_None) - { - rtl::OString aPath( getenv( "PATH" ) ); - rtl::OString aResPath( getenv( "STAR_RESOURCEPATH" ) ); - rtl::OString aCmdPath( OUStringToOString(OUString(sysWorkDir), RTL_TEXTENCODING_UTF8).getStr() ); - rtl::OString aTmpPath; - // Get absolute path of command's directory - if ( !aCmdPath.isEmpty() ) - { - DirEntry aCmdDirEntry( aCmdPath ); - aCmdDirEntry.ToAbs(); - aCmdPath = rtl::OUStringToOString( aCmdDirEntry.GetPath().GetFull(), RTL_TEXTENCODING_ASCII_US ); - } - // Assign to PATH environment variable - if ( !aCmdPath.isEmpty() ) - { - aTmpPath = rtl::OString( "PATH=" ); - aTmpPath += aCmdPath; - if ( !aPath.isEmpty() ) - aTmpPath += rtl::OUStringToOString( DirEntry::GetSearchDelimiter(), RTL_TEXTENCODING_ASCII_US ); - aTmpPath += aPath; - putenv( (char*)aTmpPath.getStr() ); - } - // Assign to STAR_RESOURCEPATH environment variable - if ( !aCmdPath.isEmpty() ) - { - aTmpPath = rtl::OString( "STAR_RESOURCEPATH=" ); - aTmpPath += aCmdPath; - if ( !aResPath.isEmpty() ) - aTmpPath += rtl::OUStringToOString( DirEntry::GetSearchDelimiter(), RTL_TEXTENCODING_ASCII_US ); - aTmpPath += aResPath; - putenv( (char*)aTmpPath.getStr() ); - } - } - } + // I doubt anything is needed on iOS } // ----------------------------------------------------------------------- commit 35b86ad73ccaf24377faaf0e73ead06ca2425b38 Author: Tor Lillqvist <t...@iki.fi> Date: Sat Jan 5 23:09:35 2013 +0200 Handle APP_DATA_DIR for iOS, too Change-Id: I7259358c917ef9e7cc93d8f6886c9a935887183b diff --git a/sal/rtl/source/bootstrap.cxx b/sal/rtl/source/bootstrap.cxx index 1f293b5..66571c6 100644 --- a/sal/rtl/source/bootstrap.cxx +++ b/sal/rtl/source/bootstrap.cxx @@ -521,6 +521,14 @@ bool Bootstrap_Impl::getValue( return true; } #endif +#ifdef IOS + if (key == "APP_DATA_DIR") { + const char *app_data_dir = [[[NSBundle mainBundle] bundlePath] UTF8String]; + rtl_uString_assign( + value, rtl::OUString(app_data_dir, strlen(app_data_dir), RTL_TEXTENCODING_UTF8).pData); + return true; + } +#endif if (key == "ORIGIN") { rtl_uString_assign( value, commit 617e5f8ac930d82129a14fb52df925cd0ff524ae Author: Tor Lillqvist <t...@iki.fi> Date: Fri Jan 4 17:41:37 2013 +0200 Hack a bit more on the iOS app build mechanism There was quite come confusion as to where Xcode wants the Run Script phase (= our gbuild mechanism) to put the executable. I think I got it right now. Xcode can be quite scary as soon as you do anything out of the ordinary. (But then, what isn't.) Change-Id: I22bbdfaef88174815bff66d6c7241f4ba2360246 diff --git a/ios/CustomTarget_Viewer_app.mk b/ios/CustomTarget_Viewer_app.mk index feb0a46..36cf8c5 100644 --- a/ios/CustomTarget_Viewer_app.mk +++ b/ios/CustomTarget_Viewer_app.mk @@ -28,9 +28,11 @@ endif # If run from Xcode, check that its configuration (device or # simulator) matches that of gbuild. We detect being run from Xcode by -# looking for $(XCODE_VERSION_ACTUAL) +# looking for $(SCRIPT_OUTPUT_FILE_0). The Run Script build phase in +# our project has as its (single) output file the location of the app +# executable in its app bundle. -ifneq ($(XCODE_VERSION_ACTUAL),) +ifneq ($(SCRIPT_OUTPUT_FILE_0),) export CCACHE_CPP2=y @@ -44,16 +46,25 @@ endif endif -APP := Viewer +ifneq ($(SCRIPT_OUTPUT_FILE_0),) +# When run from Xcode, we move the Viewer executable from solver into +# the Viewer.app directory that Xcode uses. +$(call gb_CustomTarget_get_target,ios/Viewer_app) : $(SCRIPT_OUTPUT_FILE_0) -ios_Viewer_app_DIR := $(SRC_ROOT)/ios/experimental/Viewer/DerivedData/$(APP)/Build/Products/$(xcode_config)-$(xcode_sdk)/$(APP).app +$(SCRIPT_OUTPUT_FILE_0) : $(call gb_Executable_get_target,Viewer) + $(call gb_Output_announce,$@,fii,APP,2) + mkdir -p `dirname $(SCRIPT_OUTPUT_FILE_0)` + mv $(call gb_Executable_get_target,Viewer) $(SCRIPT_OUTPUT_FILE_0) -ios_Viewer_app_EXE := $(ios_Viewer_app_DIR)/Viewer +else +# When run just from the command line, we don't have any app bundle to +# copy or move the executable to. So do nothing. +$(call gb_CustomTarget_get_target,ios/Viewer_app) : $(call gb_Executable_get_target,Viewer) -$(call gb_CustomTarget_get_target,ios/Viewer_app) : $(ios_Viewer_app_EXE) +$(call gb_CustomTarget_get_clean_target,ios/Viewer_app) : +# Here we just assume that Xcode's settings are default, or something + rm -rf experimental/Viewer/build -$(ios_Viewer_app_EXE): $(call gb_Executable_get_target,Viewer) - mkdir -p $(ios_Viewer_app_DIR) - cp $(call gb_Executable_get_target,Viewer) $(ios_Viewer_app_DIR) +endif # vim: set noet sw=4 ts=4: diff --git a/ios/experimental/Viewer/.gitignore b/ios/experimental/Viewer/.gitignore index 44ac7a8..e76e0ed 100644 --- a/ios/experimental/Viewer/.gitignore +++ b/ios/experimental/Viewer/.gitignore @@ -1,4 +1,4 @@ .DS_Store -DerivedData +build Viewer.xcodeproj/project.xcworkspace Viewer.xcodeproj/xcuserdata diff --git a/ios/experimental/Viewer/Viewer.xcodeproj/project.pbxproj b/ios/experimental/Viewer/Viewer.xcodeproj/project.pbxproj index 5e65aae..4fad8f0 100644 --- a/ios/experimental/Viewer/Viewer.xcodeproj/project.pbxproj +++ b/ios/experimental/Viewer/Viewer.xcodeproj/project.pbxproj @@ -187,11 +187,11 @@ inputPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Viewer.app", + "$(CONFIGURATION_BUILD_DIR)/$(EXECUTABLE_PATH)", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "cd ../.. && /opt/lo/bin/make"; + shellScript = "cd ../.. && /opt/lo/bin/make -r"; }; /* End PBXShellScriptBuildPhase section */ diff --git a/ios/experimental/Viewer/Viewer/Icon-72.png b/ios/experimental/Viewer/Viewer/Icon-72.png index e5a34fd..8a355c2 100644 Binary files a/ios/experimental/Viewer/Viewer/Icon-72.png and b/ios/experimental/Viewer/Viewer/Icon-72.png differ commit b95d3caa95384d0fb00ac59f875869371cc70677 Author: Tor Lillqvist <t...@iki.fi> Date: Fri Jan 4 17:40:56 2013 +0200 Use same options as Xcode does Change-Id: I34e06bdb24ece278c928c6cbba8b01a38c86ff85 diff --git a/solenv/gbuild/platform/IOS_ARM_GCC.mk b/solenv/gbuild/platform/IOS_ARM_GCC.mk index 4db1865..3d14f54 100644 --- a/solenv/gbuild/platform/IOS_ARM_GCC.mk +++ b/solenv/gbuild/platform/IOS_ARM_GCC.mk @@ -116,7 +116,7 @@ define gb_LinkTarget__command_dynamiclink $(gb_Executable_TARGETTYPEFLAGS) \ $(subst \d,$$,$(RPATH)) \ $(T_LDFLAGS) \ - -Wl$(COMMA)-dead_strip \ + -dead_strip -fobjc_link_runtime \ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits