summaryrefslogtreecommitdiff
path: root/ios
diff options
context:
space:
mode:
authorJon Nermut <jon.nermut@gmail.com>2018-01-24 22:00:52 +1100
committerjan iversen <jani@libreoffice.org>2018-01-30 08:51:39 +0100
commit671e67dfc24205a133dbbaf87bc7be9f3af56b3a (patch)
tree652e745616226a5ca04584094ed5c220cddd6574 /ios
parentfd7ca0db5c2d5d1580d76c9536828a024543ea53 (diff)
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 <jani@libreoffice.org> Tested-by: jan iversen <jani@libreoffice.org>
Diffstat (limited to 'ios')
-rw-r--r--ios/CustomTarget_iOS_link.mk1
-rw-r--r--ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj49
-rw-r--r--ios/LibreOfficeLight/LibreOfficeLight/LOKit/LibreOfficeKitWrapper.swift5
-rw-r--r--ios/source/LibreOfficeKit.c7
-rw-r--r--ios/source/LibreOfficeKit.h2
5 files changed, 49 insertions, 15 deletions
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);