ios/CustomTarget_iOS_link.mk                                            |    1 
 ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj         |   49 
++++++++--
 ios/LibreOfficeLight/LibreOfficeLight/LOKit/LibreOfficeKitWrapper.swift |    5 
-
 ios/source/LibreOfficeKit.c                                             |    7 
-
 ios/source/LibreOfficeKit.h                                             |    2 
 5 files changed, 49 insertions(+), 15 deletions(-)

New commits:
commit 671e67dfc24205a133dbbaf87bc7be9f3af56b3a
Author: Jon Nermut <jon.ner...@gmail.com>
Date:   Wed Jan 24 22:00:52 2018 +1100

    iOS: linker changes for on device
    
    [ae490dd] iOS: add script to sym link the dylib to the right spot
    
    Adds a shell script to symlink the right dylib into the build products 
folder,
    which means we can reference libKit.dylib relative to that, rather than 
absolutely
    
    [ba4c072] iOS: pass in user path
    
    On device using appPath/user as the user directory causes a crash, as an 
app cannot write inside it's bundle. Instead, add a new param to pass the 
documents dir into the init.
    
    [088ad49] iOS: linker changes to run on device
    
    Change-Id: I16f5d85f3ca483df11b82108ee39c4ec461214f4
    Reviewed-on: https://gerrit.libreoffice.org/48866
    Reviewed-by: jan iversen <j...@libreoffice.org>
    Tested-by: jan iversen <j...@libreoffice.org>

diff --git a/ios/CustomTarget_iOS_link.mk b/ios/CustomTarget_iOS_link.mk
index ab5ad721d8d7..ef6303a217d8 100644
--- a/ios/CustomTarget_iOS_link.mk
+++ b/ios/CustomTarget_iOS_link.mk
@@ -51,6 +51,7 @@ $(IOSKIT): $(IOSOBJ) $(IOSLIBS)
        $(gb_CC) -dynamiclib \
            -Xlinker -rpath -Xlinker @executable_path/Frameworks \
            -Xlinker -rpath -Xlinker @loader_path/Frameworks \
+        -install_name @rpath/libKit.dylib \
            -dead_strip \
            -Xlinker -export_dynamic \
            -Xlinker -no_deduplicate \
diff --git a/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj 
b/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
index 856d8b353bfb..4310b7862e3b 100644
--- a/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
+++ b/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
@@ -13,7 +13,6 @@
                39022C211EDC2D0800100066 /* icudt60l.dat in Resources */ = {isa 
= PBXBuildFile; fileRef = 39022C201EDC2D0800100066 /* icudt60l.dat */; };
                39284DB31FA5F207006F43E4 /* DocumentActions.swift in Sources */ 
= {isa = PBXBuildFile; fileRef = 39284DB21FA5F207006F43E4 /* 
DocumentActions.swift */; };
                392ED9B31E5E4B03005C8435 /* ViewPrintManager.swift in Sources 
*/ = {isa = PBXBuildFile; fileRef = 392ED9B21E5E4B03005C8435 /* 
ViewPrintManager.swift */; };
-               396C833F1FC9D89E008E662A /* libKit.dylib in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 396C833E1FC9D89D008E662A /* libKit.dylib */; };
                396F92F71E7AE62400A28C82 /* Settings.bundle in Resources */ = 
{isa = PBXBuildFile; fileRef = 396F92F61E7AE62400A28C82 /* Settings.bundle */; 
};
                397868D61E59A3EA007F9248 /* LaunchScreen.xib in Resources */ = 
{isa = PBXBuildFile; fileRef = 397868D81E59A3EA007F9248 /* LaunchScreen.xib */; 
};
                397E08FE1E597BD8001374E0 /* AppDelegate.swift in Sources */ = 
{isa = PBXBuildFile; fileRef = 397E08FD1E597BD8001374E0 /* AppDelegate.swift 
*/; };
@@ -42,8 +41,24 @@
                FCC2E4012004B65E00CEB504 /* example.odt in Resources */ = {isa 
= PBXBuildFile; fileRef = FCC2E4002004B65E00CEB504 /* example.odt */; };
                FCC2E4032004B72700CEB504 /* Util.swift in Sources */ = {isa = 
PBXBuildFile; fileRef = FCC2E4022004B72700CEB504 /* Util.swift */; };
                FCC2E4052004B74000CEB504 /* AsyncUtil.swift in Sources */ = 
{isa = PBXBuildFile; fileRef = FCC2E4042004B74000CEB504 /* AsyncUtil.swift */; 
};
+               FCC7651D201C7F8A007D190C /* libKit.dylib in Frameworks */ = 
{isa = PBXBuildFile; fileRef = FCC7651C201C7F8A007D190C /* libKit.dylib */; };
+               FCC7651E201C80A5007D190C /* libKit.dylib in Embed Libraries */ 
= {isa = PBXBuildFile; fileRef = FCC7651C201C7F8A007D190C /* libKit.dylib */; 
settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 /* End PBXBuildFile section */
 
+/* Begin PBXCopyFilesBuildPhase section */
+               FC148CE420187F7800C349CA /* Embed Libraries */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = "";
+                       dstSubfolderSpec = 10;
+                       files = (
+                               FCC7651E201C80A5007D190C /* libKit.dylib in 
Embed Libraries */,
+                       );
+                       name = "Embed Libraries";
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXCopyFilesBuildPhase section */
+
 /* Begin PBXFileReference section */
                39022C1A1EDC2A0E00100066 /* program */ = {isa = 
PBXFileReference; lastKnownFileType = folder; name = program; path = 
../generated/resources/program; sourceTree = "<group>"; };
                39022C1C1EDC2A2C00100066 /* services */ = {isa = 
PBXFileReference; lastKnownFileType = folder; name = services; path = 
../generated/resources/services; sourceTree = "<group>"; };
@@ -52,7 +67,6 @@
                39284DB21FA5F207006F43E4 /* DocumentActions.swift */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.swift; path = 
DocumentActions.swift; sourceTree = "<group>"; };
                392ED9B21E5E4B03005C8435 /* ViewPrintManager.swift */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name 
= ViewPrintManager.swift; path = LibreOfficeLight/ViewPrintManager.swift; 
sourceTree = SOURCE_ROOT; };
                39503A6F1F94C4AC00F19C78 /* lokit-Bridging-Header.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"lokit-Bridging-Header.h"; sourceTree = "<group>"; };
-               396C833E1FC9D89D008E662A /* libKit.dylib */ = {isa = 
PBXFileReference; lastKnownFileType = archive.ar; name = libKit.dylib; path = 
../generated/simulator/libKit.dylib; sourceTree = "<group>"; };
                396F92F61E7AE62400A28C82 /* Settings.bundle */ = {isa = 
PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = 
Settings.bundle; sourceTree = "<group>"; };
                397275391E77D9F1006ACDCC /* LibreOfficeLight.entitlements */ = 
{isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = 
LibreOfficeLight.entitlements; sourceTree = "<group>"; };
                397868D71E59A3EA007F9248 /* en */ = {isa = PBXFileReference; 
lastKnownFileType = file.xib; name = en; path = en.lproj/LaunchScreen.xib; 
sourceTree = "<group>"; };
@@ -85,6 +99,7 @@
                FCC2E4002004B65E00CEB504 /* example.odt */ = {isa = 
PBXFileReference; lastKnownFileType = file; name = example.odt; path = 
"../../android/default-document/example.odt"; sourceTree = "<group>"; };
                FCC2E4022004B72700CEB504 /* Util.swift */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.swift; path = Util.swift; 
sourceTree = "<group>"; };
                FCC2E4042004B74000CEB504 /* AsyncUtil.swift */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncUtil.swift; 
sourceTree = "<group>"; };
+               FCC7651C201C7F8A007D190C /* libKit.dylib */ = {isa = 
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = 
libKit.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -92,7 +107,7 @@
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               396C833F1FC9D89E008E662A /* libKit.dylib in 
Frameworks */,
+                               FCC7651D201C7F8A007D190C /* libKit.dylib in 
Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
@@ -122,7 +137,7 @@
                3972753A1E77D9F7006ACDCC /* Frameworks */ = {
                        isa = PBXGroup;
                        children = (
-                               396C833E1FC9D89D008E662A /* libKit.dylib */,
+                               FCC7651C201C7F8A007D190C /* libKit.dylib */,
                        );
                        name = Frameworks;
                        sourceTree = "<group>";
@@ -209,9 +224,11 @@
                        isa = PBXNativeTarget;
                        buildConfigurationList = 397E09251E597BD8001374E0 /* 
Build configuration list for PBXNativeTarget "LibreOfficeLight" */;
                        buildPhases = (
+                               FC148D13201C7A6600C349CA /* ShellScript */,
                                397E08F61E597BD8001374E0 /* Sources */,
                                397E08F71E597BD8001374E0 /* Frameworks */,
                                397E08F81E597BD8001374E0 /* Resources */,
+                               FC148CE420187F7800C349CA /* Embed Libraries */,
                        );
                        buildRules = (
                        );
@@ -295,6 +312,22 @@
                };
 /* End PBXResourcesBuildPhase section */
 
+/* Begin PBXShellScriptBuildPhase section */
+               FC148D13201C7A6600C349CA /* ShellScript */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/bash;
+                       shellScript = "echo 
hello\n\nGEN=$PROJECT_DIR/../generated\necho $arch\nif [ $arch = \"x86_64\" ]; 
then\nLIB=$GEN/simulator/libKit.dylib\nelse\nLIB=$GEN/release/libKit.dylib\nfi\necho
 $LIB\nln -sf $LIB $TARGET_BUILD_DIR/libKit.dylib\n\n\n\n\n";
+               };
+/* End PBXShellScriptBuildPhase section */
+
 /* Begin PBXSourcesBuildPhase section */
                397E08F61E597BD8001374E0 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
@@ -395,7 +428,7 @@
                                HEADER_SEARCH_PATHS = "$(inherited)";
                                IPHONEOS_DEPLOYMENT_TARGET = 11.2;
                                LD_MAP_FILE_PATH = "";
-                               LIBRARY_SEARCH_PATHS = 
$PROJECT_DIR/../generated/;
+                               LIBRARY_SEARCH_PATHS = 
"$PROJECT_DIR/../generated/debug/**";
                                MACH_O_TYPE = mh_execute;
                                MTL_ENABLE_DEBUG_INFO = YES;
                                ONLY_ACTIVE_ARCH = YES;
@@ -457,11 +490,11 @@
                                HEADER_SEARCH_PATHS = "$(inherited)";
                                IPHONEOS_DEPLOYMENT_TARGET = 11.2;
                                LD_MAP_FILE_PATH = "";
-                               LIBRARY_SEARCH_PATHS = 
$PROJECT_DIR/../generated/;
+                               LIBRARY_SEARCH_PATHS = 
"$PROJECT_DIR/../generated/release/**";
                                MACH_O_TYPE = mh_execute;
                                MTL_ENABLE_DEBUG_INFO = NO;
                                ONLY_ACTIVE_ARCH = YES;
-                               OTHER_LDFLAGS = libKit_ARM64.a;
+                               OTHER_LDFLAGS = "";
                                SDKROOT = iphoneos;
                                SWIFT_OBJC_BRIDGING_HEADER = 
"lokit-Bridging-Header.h";
                                SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
@@ -591,7 +624,7 @@
                                HEADER_SEARCH_PATHS = "$(inherited)";
                                IPHONEOS_DEPLOYMENT_TARGET = 11.2;
                                LD_MAP_FILE_PATH = "";
-                               LIBRARY_SEARCH_PATHS = 
$PROJECT_DIR/../generated/;
+                               LIBRARY_SEARCH_PATHS = 
"$PROJECT_DIR/../generated/simulator/**";
                                MACH_O_TYPE = mh_execute;
                                MTL_ENABLE_DEBUG_INFO = YES;
                                ONLY_ACTIVE_ARCH = YES;
diff --git 
a/ios/LibreOfficeLight/LibreOfficeLight/LOKit/LibreOfficeKitWrapper.swift 
b/ios/LibreOfficeLight/LibreOfficeLight/LOKit/LibreOfficeKitWrapper.swift
index 8fff510bbcc6..f096cd78ff74 100644
--- a/ios/LibreOfficeLight/LibreOfficeLight/LOKit/LibreOfficeKitWrapper.swift
+++ b/ios/LibreOfficeLight/LibreOfficeLight/LOKit/LibreOfficeKitWrapper.swift
@@ -66,7 +66,10 @@ open class LibreOffice
     {
         let b = Bundle.init(for: LibreOffice.self)
         let path = b.bundlePath // not Bundle.main.bundlePath
-        BridgeLOkit_Init(path)
+        let docsDir = getDocumentsDirectory()
+        let userDir = docsDir.appendingPathComponent("user")
+        print("Calling BridgeLOkit_Init with \(path), \(userDir.path)" )
+        BridgeLOkit_Init(path, userDir.path)
         let pLok = BridgeLOkit_getLOK()
         if let lokClass = pLok?.pointee.pClass?.pointee
         {
diff --git a/ios/source/LibreOfficeKit.c b/ios/source/LibreOfficeKit.c
index 1868ae7b21fa..55f56d212ab2 100644
--- a/ios/source/LibreOfficeKit.c
+++ b/ios/source/LibreOfficeKit.c
@@ -31,15 +31,12 @@ static double twipsPerXtile, twipsPerYtile;
 
 // Bridge functions to LibreOfficeKit
 __attribute__((visibility("default")))
-int BridgeLOkit_Init(const char *path)
+int BridgeLOkit_Init(const char *appPath, const char *userPath)
 {
-    char bufUserPath[200];
-    strcpy(bufUserPath, path);
-    strcpy(bufUserPath + strlen(path), "/user");
 
     // Initialize LibreOfficeKit
     if (!kit) {
-        kit = lok_init_2(path, bufUserPath);
+        kit = lok_init_2(appPath, userPath);
         if (!kit)
             return 1;
     }
diff --git a/ios/source/LibreOfficeKit.h b/ios/source/LibreOfficeKit.h
index c4624371b347..abc4fe87a4ce 100644
--- a/ios/source/LibreOfficeKit.h
+++ b/ios/source/LibreOfficeKit.h
@@ -11,7 +11,7 @@
 // The swift compiler uses this header to generate a needed interface
 // The functions (LibreOfficeKit.mm) calls functions directly in LibreOffice
 
-int BridgeLOkit_Init(const char *path);
+int BridgeLOkit_Init(const char *appPath, const char *userPath);
 int BridgeLOkit_Sizing(const int countXtiles, const int countYtiles,
                        const int pixelsXtile, const int pixelsYtile);
 int BridgeLOkit_open(const char *path);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to