[sword-svn] r3573 - in trunk: bindings bindings/cordova bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios bindings/objc bindings/objc/ObjCSword.xcodeproj include

scribe at crosswire.org scribe at crosswire.org
Tue Feb 20 02:41:43 MST 2018


Author: scribe
Date: 2018-02-20 02:41:42 -0700 (Tue, 20 Feb 2018)
New Revision: 3573

Added:
   trunk/bindings/objc/README
Modified:
   trunk/bindings/cordova/README
   trunk/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift
   trunk/bindings/flatapi.cpp
   trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
   trunk/include/flatapi.h
Log:
updated to better support ios cordova bindings


Modified: trunk/bindings/cordova/README
===================================================================
--- trunk/bindings/cordova/README	2018-02-20 04:33:53 UTC (rev 3572)
+++ trunk/bindings/cordova/README	2018-02-20 09:41:42 UTC (rev 3573)
@@ -1,5 +1,7 @@
 This folder contains a cordova plugin which is based on the
 ../Android bindings which is based on the java-jni/ bindings.
+and
+../objc bindings which is based on the flatapi bindings.
 
 Follow the README in the ../java-jni/ bindings folder.
 

Modified: trunk/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift
===================================================================
--- trunk/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift	2018-02-20 04:33:53 UTC (rev 3572)
+++ trunk/bindings/cordova/org.crosswire.sword.cordova.SWORD/src/ios/SWORD.swift	2018-02-20 09:41:42 UTC (rev 3573)
@@ -28,7 +28,10 @@
 
 		let libswordVersion = String(cString: org_crosswire_sword_SWMgr_version(mgr))
 		debugPrint("libswordVersion: " + libswordVersion)
-		self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: "initSWORD; Version: " + libswordVersion), callbackId: command.callbackId)
+        let info = [
+            "version": libswordVersion
+        ] as [AnyHashable : Any]
+		self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: info), callbackId: command.callbackId)
 	}
 
 
@@ -140,22 +143,26 @@
         let name = org_crosswire_sword_SWModule_getName(module)
         let description = org_crosswire_sword_SWModule_getDescription(module)
         let category = org_crosswire_sword_SWModule_getCategory(module)
+
+        var response = [
+            "name": name == nil ? "" : String(cString: name!),
+            "description": description == nil ? "" : String(cString: description!),
+            "category": category == nil ? "" : String(cString: category!)
+        ]
         let language = org_crosswire_sword_SWModule_getConfigEntry(module, "Lang")
+        response["language"] =  language == nil ? "" : String(cString: language!)
         let direction = org_crosswire_sword_SWModule_getConfigEntry(module, "Direction")
+        response["direction"] =  direction == nil ? "" : String(cString: direction!)
         let font = org_crosswire_sword_SWModule_getConfigEntry(module, "Font")
+        response["font"] =  font == nil ? "" : String(cString: font!)
         let shortCopyright = org_crosswire_sword_SWModule_getConfigEntry(module, "ShortCopyright")
+        response["shortCopyright"] =  shortCopyright == nil ? "" : String(cString: shortCopyright!)
+        let cipherKey = org_crosswire_sword_SWModule_getConfigEntry(module, "CipherKey")
+        response["cipherKey"] =  cipherKey == nil ? "" : String(cString: cipherKey!)
         let shortPromo = org_crosswire_sword_SWModule_getConfigEntry(module, "ShortPromo")
+        response["shortPromo"] = shortPromo == nil ? "" : String(cString: shortPromo!)
 
-        let response = [
-            "name": name == nil ? "" : String(cString: name!),
-            "description": description == nil ? "" : String(cString: description!),
-            "category": category == nil ? "" : String(cString: category!),
-            "language": language == nil ? "" : String(cString: language!),
-            "direction": direction == nil ? "" : String(cString: direction!),
-            "font": font == nil ? "" : String(cString: font!),
-            "shortCopyright": shortCopyright == nil ? "" : String(cString: shortCopyright!),
-            "shortPromo": shortPromo == nil ? "" : String(cString: shortPromo!)
-        ]
+
 		self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: response), callbackId: command.callbackId)
 	}
 
@@ -167,6 +174,7 @@
         let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
         let confPath = baseDir + "/extraConfig.conf";
         let retVal = getStringArray(buffer: org_crosswire_sword_SWConfig_augmentConfig(confPath, blob))
+	self.reinitMgr()
         self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
     }
     
@@ -189,7 +197,8 @@
         let key = command.arguments[1] as? String ?? ""
         let baseDir = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path)! + "/sword";
         let confPath = baseDir + "/extraConfig.conf";
-        let retVal = String(cString:org_crosswire_sword_SWConfig_getKeyValue(confPath, section, key))
+        let keyVal = org_crosswire_sword_SWConfig_getKeyValue(confPath, section, key)
+        let retVal = keyVal == nil ? nil : String(cString:keyVal!)
         self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: retVal), callbackId: command.callbackId)
     }
     
@@ -702,6 +711,7 @@
                 "category": String(cString: i.category),
                 "language": String(cString: i.language),
                 "delta": String(cString: i.delta),
+                "cipherKey": i.cipherKey == nil ? nil : String(cString: i.cipherKey),
                 "version": String(cString: i.version)
                 ] as [AnyHashable : Any]
             mods.append(modInfo)
@@ -786,7 +796,7 @@
         
         var mods = [[AnyHashable : Any]]()
         for i in modInfoList {
-            let modInfo = [
+            var modInfo = [
                 "name": String(cString: i.name),
                 "description": String(cString: i.description),
                 "category": String(cString: i.category),
@@ -794,7 +804,12 @@
                 "delta": i.delta == nil ? "" : String(cString: i.delta),
                 "version": i.version == nil ? "" : String(cString: i.version)
             ] as [AnyHashable : Any]
+
+            if (i.cipherKey != nil) {
+                modInfo["cipherKey"] = String(cString: i.cipherKey)
+            }
             mods.append(modInfo)
+
         }
         self.commandDelegate!.send(CDVPluginResult(status: CDVCommandStatus_OK, messageAs: mods), callbackId: command.callbackId)
     }

Modified: trunk/bindings/flatapi.cpp
===================================================================
--- trunk/bindings/flatapi.cpp	2018-02-20 04:33:53 UTC (rev 3572)
+++ trunk/bindings/flatapi.cpp	2018-02-20 09:41:42 UTC (rev 3573)
@@ -36,6 +36,7 @@
 #include <swlog.h>
 #include <localemgr.h>
 #include <utilstr.h>
+#include <rtfhtml.h>
 #include "corba/orbitcpp/webmgr.hpp"
 
 extern "C" {
@@ -81,6 +82,7 @@
 				delete [] (*modInfo)[i].language;
 				delete [] (*modInfo)[i].version;
 				delete [] (*modInfo)[i].delta;
+				delete [] (*modInfo)[i].cipherKey;
 			}
 			else break;
 		}
@@ -924,7 +926,14 @@
 
 	GETSWMODULE(hSWModule, 0);
 
-	stdstr(&(hmod->configEntry), (module->getConfigEntry(key) ? assureValidUTF8(module->getConfigEntry(key)).c_str() : 0));
+	const char *exists = module->getConfigEntry(key);
+	SWBuf confValue = exists;
+	// special processing if we're requesting About-- kindof cheese
+	if (!strcmp("About", key) && exists) {
+		RTFHTML().processText(confValue);
+	}
+	SWBuf assuredBuf = assureValidUTF8(confValue.c_str());
+	stdstr(&(hmod->configEntry), (exists ? assuredBuf.c_str() : 0));
 
 	return hmod->configEntry;
 }
@@ -1047,7 +1056,7 @@
 	int i = 0;
 	for (sword::ModMap::iterator it = mgr->Modules.begin(); it != mgr->Modules.end(); ++it) {
 		module = it->second;
-		if ((!(module->getConfigEntry("CipherKey"))) || (*(module->getConfigEntry("CipherKey")))) {
+//		if ((!(module->getConfigEntry("CipherKey"))) || (*(module->getConfigEntry("CipherKey")))) {
 			SWBuf type = module->getType();
 			SWBuf cat = module->getConfigEntry("Category");
 			SWBuf version = module->getConfigEntry("Version");
@@ -1058,8 +1067,13 @@
 			stdstr(&(milist[i].language), assureValidUTF8(module->getLanguage()));
 			stdstr(&(milist[i].version), assureValidUTF8(version.c_str()));
 			stdstr(&(milist[i].delta), "");
+			const char *cipherKey = module->getConfigEntry("CipherKey");
+			if (cipherKey) {
+				stdstr(&(milist[i].cipherKey), assureValidUTF8(cipherKey));
+			}
+			else	milist[i].cipherKey = 0;
 			if (++i >= size) break;
-		}
+//		}
 	}
 	hmgr->modInfo = milist;
 	return milist;
@@ -1632,6 +1646,7 @@
 
 		SWBuf type = module->getType();
 		SWBuf cat = module->getConfigEntry("Category");
+		const char *cipherKey = module->getConfigEntry("CipherKey");
 		if (cat.length() > 0) type = cat;
 
 		stdstr(&(retVal[i].name), assureValidUTF8(module->getName()));
@@ -1639,8 +1654,9 @@
 		stdstr(&(retVal[i].category), assureValidUTF8(type.c_str()));
 		stdstr(&(retVal[i].language), assureValidUTF8(module->getLanguage()));
 		stdstr(&(retVal[i].version), assureValidUTF8(version.c_str()));
-		stdstr(&(retVal[i++].delta), assureValidUTF8(statusString.c_str()));
-		if (i >= size) break;
+		stdstr(&(retVal[i].delta), assureValidUTF8(statusString.c_str()));
+		stdstr(&(retVal[i].cipherKey), cipherKey ? (const char *)assureValidUTF8(cipherKey) : (const char *)0);
+		if (++i >= size) break;
 	}
 	hinstmgr->modInfo = retVal;
 	return retVal;

Modified: trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
===================================================================
--- trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj	2018-02-20 04:33:53 UTC (rev 3572)
+++ trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj	2018-02-20 09:41:42 UTC (rev 3573)
@@ -7,6 +7,17 @@
 	objects = {
 
 /* Begin PBXAggregateTarget section */
+		0A59E69F1FCF228B00CD0BD2 /* SWORDUniversal */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 0A59E6A21FCF228C00CD0BD2 /* Build configuration list for PBXAggregateTarget "SWORDUniversal" */;
+			buildPhases = (
+				0A59E6A51FCF254700CD0BD2 /* ShellScript */,
+			);
+			dependencies = (
+			);
+			name = SWORDUniversal;
+			productName = UniversalLib;
+		};
 		A9D271FA14D7193300DA8926 /* Utilities */ = {
 			isa = PBXAggregateTarget;
 			buildConfigurationList = A9D271FB14D7193300DA8926 /* Build configuration list for PBXAggregateTarget "Utilities" */;
@@ -94,8 +105,6 @@
 		0A1F16A41FBB755B00E0AEFA /* SWORD.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A1F16A31FBB755B00E0AEFA /* SWORD.m */; };
 		0A1F16A51FBB755B00E0AEFA /* SWORD.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0A1F16A21FBB755B00E0AEFA /* SWORD.h */; };
 		0A1F16A91FBB75AB00E0AEFA /* flatapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0A1F16991FBB70E200E0AEFA /* flatapi.cpp */; };
-		0A1F16AA1FBB75D600E0AEFA /* swdisp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80113EE98B30094E3FE /* swdisp.cpp */; };
-		0A1F16AB1FBB75D600E0AEFA /* swlog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80213EE98B30094E3FE /* swlog.cpp */; };
 		0A1F16AC1FBB75D600E0AEFA /* listkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80913EE98B30094E3FE /* listkey.cpp */; };
 		0A1F16AD1FBB75D600E0AEFA /* strkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81013EE98B30094E3FE /* strkey.cpp */; };
 		0A1F16AE1FBB75D600E0AEFA /* swkey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A81113EE98B30094E3FE /* swkey.cpp */; };
@@ -560,6 +569,8 @@
 		0A5888BC1FB44ABF00F7DAA3 /* zverse.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129D919DF144D005BCBC1 /* zverse.h */; };
 		0A5888BD1FB44ABF00F7DAA3 /* zverse4.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A129DA19DF144D005BCBC1 /* zverse4.h */; };
 		0A5888BE1FB44ACC00F7DAA3 /* regex.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A1295119DF144D005BCBC1 /* regex.h */; };
+		0A59E6A31FCF252800CD0BD2 /* swdisp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80113EE98B30094E3FE /* swdisp.cpp */; };
+		0A59E6A41FCF252800CD0BD2 /* swlog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A80213EE98B30094E3FE /* swlog.cpp */; };
 		0AA1DD361FB46FD00082E131 /* sword.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AA1DD341FB46FD00082E131 /* sword.m */; };
 		0AA1DD371FB46FD00082E131 /* sword.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA1DD351FB46FD00082E131 /* sword.h */; };
 		8C92C31DC92DF0671FCEB5B3 /* SwordFilter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8C92CC111DC521DE0C054C60 /* SwordFilter.mm */; };
@@ -5597,6 +5608,11 @@
 						DevelopmentTeam = J9J97ZC4K5;
 						ProvisioningStyle = Automatic;
 					};
+					0A59E69F1FCF228B00CD0BD2 = {
+						CreatedOnToolsVersion = 9.1;
+						DevelopmentTeam = J9J97ZC4K5;
+						ProvisioningStyle = Automatic;
+					};
 					8DC2EF4F0486A6940098B216 = {
 						DevelopmentTeam = J9J97ZC4K5;
 						ProvisioningStyle = Automatic;
@@ -5714,6 +5730,7 @@
 				0A011D9D1FB4142500778C2B /* sword */,
 				0A011DA51FB4142500778C2B /* SWORDTests */,
 				0A1F169F1FBB755B00E0AEFA /* SWORD */,
+				0A59E69F1FCF228B00CD0BD2 /* SWORDUniversal */,
 			);
 		};
 /* End PBXProject section */
@@ -5760,6 +5777,22 @@
 		};
 /* End PBXResourcesBuildPhase section */
 
+/* Begin PBXShellScriptBuildPhase section */
+		0A59E6A51FCF254700CD0BD2 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# define output folder environment variable\nUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal\n\n# Step 1. Build Device and Simulator versions\nxcodebuild -target ${PROJECT_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\"\nxcodebuild -target ${PROJECT_NAME} -configuration ${CONFIGURATION} -sdk iphonesimulator -arch x86_64 -arch i386 -arch armv7 -arch armv7s -arch arm64 BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\"\n\n# make sure the output directory exists\nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\n# Step 2. Create universal binary file using lipo\nlipo -create -output \"${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a\" \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a\" \"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a\"\n\necho \"Universal library can be found here:\"\necho ${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a\n\n# Last touch. copy the header files. Just for convenience\ncp -R \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/include\" \"${UNIVERSAL_OUTPUTFOLDER}/\"";
+		};
+/* End PBXShellScriptBuildPhase section */
+
 /* Begin PBXSourcesBuildPhase section */
 		0A011D991FB4142500778C2B /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
@@ -5969,6 +6002,7 @@
 				0A1F16B41FBB75D600E0AEFA /* versificationmgr.cpp in Sources */,
 				0A1F17231FBB768100E0AEFA /* thmlmorph.cpp in Sources */,
 				0A1F16D41FBB762D00E0AEFA /* ftplib.c in Sources */,
+				0A59E6A41FCF252800CD0BD2 /* swlog.cpp in Sources */,
 				0A1F17301FBB768100E0AEFA /* utf8arshaping.cpp in Sources */,
 				0A1F171C1FBB768100E0AEFA /* teirtf.cpp in Sources */,
 				0A1F17271FBB768100E0AEFA /* thmlscripref.cpp in Sources */,
@@ -5999,7 +6033,6 @@
 				0A1F17441FBB76A700E0AEFA /* lzsscomprs.cpp in Sources */,
 				0A1F16F61FBB768100E0AEFA /* gbfheadings.cpp in Sources */,
 				0A1F17161FBB768100E0AEFA /* papyriplain.cpp in Sources */,
-				0A1F16AB1FBB75D600E0AEFA /* swlog.cpp in Sources */,
 				0A1F16DC1FBB762D00E0AEFA /* utilxml.cpp in Sources */,
 				0A1F16DD1FBB765A00E0AEFA /* rawgenbook.cpp in Sources */,
 				0A1F17001FBB768100E0AEFA /* gbfwebif.cpp in Sources */,
@@ -6067,6 +6100,7 @@
 				0A1F171D1FBB768100E0AEFA /* thmlfootnotes.cpp in Sources */,
 				0A1F17341FBB768100E0AEFA /* utf8hebrewpoints.cpp in Sources */,
 				0A1F174C1FBB76A700E0AEFA /* zipcomprs.cpp in Sources */,
+				0A59E6A31FCF252800CD0BD2 /* swdisp.cpp in Sources */,
 				0A1F16EB1FBB768100E0AEFA /* gbflatex.cpp in Sources */,
 				0A1F170D1FBB768100E0AEFA /* osisplain.cpp in Sources */,
 				0A1F16F31FBB768100E0AEFA /* teixhtml.cpp in Sources */,
@@ -6114,7 +6148,6 @@
 				0A1F17011FBB768100E0AEFA /* gbfwordjs.cpp in Sources */,
 				0A1F172D1FBB768100E0AEFA /* unicodertf.cpp in Sources */,
 				0A1F17321FBB768100E0AEFA /* utf8cantillation.cpp in Sources */,
-				0A1F16AA1FBB75D600E0AEFA /* swdisp.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -6466,7 +6499,7 @@
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
 				MTL_ENABLE_DEBUG_INFO = YES;
-				ONLY_ACTIVE_ARCH = NO;
+				ONLY_ACTIVE_ARCH = YES;
 				PRODUCT_BUNDLE_IDENTIFIER = org.crosswire.apple.SWORD;
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
 				SDKROOT = iphoneos;
@@ -6644,11 +6677,13 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				IPHONEOS_DEPLOYMENT_TARGET = 11.1;
 				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = NO;
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
 				TARGETED_DEVICE_FAMILY = "1,2";
+				VALID_ARCHS = "x86_64 armv7 armv7s arm64";
 			};
 			name = Debug;
 		};
@@ -6677,15 +6712,35 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
 				IPHONEOS_DEPLOYMENT_TARGET = 11.1;
 				MTL_ENABLE_DEBUG_INFO = NO;
+				ONLY_ACTIVE_ARCH = NO;
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALIDATE_PRODUCT = YES;
+				VALID_ARCHS = "x86_64 armv7 armv7s arm64";
 			};
 			name = Release;
 		};
+		0A59E6A01FCF228C00CD0BD2 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = J9J97ZC4K5;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		0A59E6A11FCF228C00CD0BD2 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = J9J97ZC4K5;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
 		1DEB91AE08733DA50010E9CD /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -8466,6 +8521,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		0A59E6A21FCF228C00CD0BD2 /* Build configuration list for PBXAggregateTarget "SWORDUniversal" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				0A59E6A01FCF228C00CD0BD2 /* Debug */,
+				0A59E6A11FCF228C00CD0BD2 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "ObjCSword" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

Added: trunk/bindings/objc/README
===================================================================
--- trunk/bindings/objc/README	                        (rev 0)
+++ trunk/bindings/objc/README	2018-02-20 09:41:42 UTC (rev 3573)
@@ -0,0 +1,3 @@
+For Universal libsword.a use XCode and compile SWORD/SWORD.xcodeproj
+then if you'd like to add ios support to the ../cordova bindings,
+the Makefile in here will copy the Universal lib and other deps.

Modified: trunk/include/flatapi.h
===================================================================
--- trunk/include/flatapi.h	2018-02-20 04:33:53 UTC (rev 3572)
+++ trunk/include/flatapi.h	2018-02-20 09:41:42 UTC (rev 3573)
@@ -39,6 +39,7 @@
 	char *language;
 	char *version;
 	char *delta;
+	char *cipherKey;
 };
 
 




More information about the sword-cvs mailing list