diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 715d0edc..5f670c88 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.7.719 + 1.7.728 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index c6cac1e3..2604210f 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.7.816 + 1.7.833 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj index 7aa0ba8e..d98035cd 100644 --- a/Kiwix.xcodeproj/project.pbxproj +++ b/Kiwix.xcodeproj/project.pbxproj @@ -132,8 +132,6 @@ 975227A11D020C00001D1DDE /* resourceTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227961D020C00001D1DDE /* resourceTools.cpp */; }; 975227A21D020C00001D1DDE /* stringTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227971D020C00001D1DDE /* stringTools.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; 975227A31D020C00001D1DDE /* stringTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227971D020C00001D1DDE /* stringTools.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; - 975227A81D020C2E001D1DDE /* htmlparse.cc in Sources */ = {isa = PBXBuildFile; fileRef = 975227A61D020C2E001D1DDE /* htmlparse.cc */; }; - 975227A91D020C2E001D1DDE /* myhtmlparse.cc in Sources */ = {isa = PBXBuildFile; fileRef = 975227A71D020C2E001D1DDE /* myhtmlparse.cc */; }; 975227AC1D020D83001D1DDE /* ZimIndexer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 975227AB1D020D83001D1DDE /* ZimIndexer.mm */; }; 975227AE1D0213D3001D1DDE /* xapianIndexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975227AD1D0213D3001D1DDE /* xapianIndexer.cpp */; settings = {COMPILER_FLAGS = "-w"; }; }; 975227B01D021539001D1DDE /* IndexerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975227AF1D021539001D1DDE /* IndexerController.swift */; }; @@ -373,8 +371,6 @@ 973DD4271D36E3E4009D45DB /* SettingSingleSwitchTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingSingleSwitchTBVC.swift; path = "Kiwix-iOS/Controller/Setting/SettingSingleSwitchTBVC.swift"; sourceTree = SOURCE_ROOT; }; 97497B5A1D07487000ECD691 /* indexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = indexer.h; path = "Kiwix/libkiwix/C&C++/indexer.h"; sourceTree = ""; }; 97497B5B1D07487000ECD691 /* resourceTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = resourceTools.h; path = "Kiwix/libkiwix/C&C++/resourceTools.h"; sourceTree = ""; }; - 97497B5C1D074FB800ECD691 /* htmlparse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = htmlparse.h; path = "Kiwix/libkiwix/C&C++/xapian/htmlparse.h"; sourceTree = ""; }; - 97497B5D1D074FB800ECD691 /* myhtmlparse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = myhtmlparse.h; path = "Kiwix/libkiwix/C&C++/xapian/myhtmlparse.h"; sourceTree = ""; }; 97497B5E1D07584100ECD691 /* xapianIndexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = xapianIndexer.h; path = "Kiwix/libkiwix/C&C++/xapianIndexer.h"; sourceTree = ""; }; 974F42811D47E19A00F8074C /* SettingWidgetBookmarksTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingWidgetBookmarksTBVC.swift; path = "Kiwix-iOS/Controller/Setting/SettingWidgetBookmarksTBVC.swift"; sourceTree = SOURCE_ROOT; }; 975227811D020560001D1DDE /* Indexer.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Indexer.storyboard; path = "Kiwix-OSX/StoryBoards/Indexer.storyboard"; sourceTree = SOURCE_ROOT; }; @@ -384,8 +380,6 @@ 975227951D020C00001D1DDE /* reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = reader.cpp; path = "Kiwix/libkiwix/C&C++/reader.cpp"; sourceTree = ""; tabWidth = 2; }; 975227961D020C00001D1DDE /* resourceTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = resourceTools.cpp; path = "Kiwix/libkiwix/C&C++/resourceTools.cpp"; sourceTree = ""; }; 975227971D020C00001D1DDE /* stringTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stringTools.cpp; path = "Kiwix/libkiwix/C&C++/stringTools.cpp"; sourceTree = ""; }; - 975227A61D020C2E001D1DDE /* htmlparse.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = htmlparse.cc; path = "Kiwix/libkiwix/C&C++/xapian/htmlparse.cc"; sourceTree = ""; }; - 975227A71D020C2E001D1DDE /* myhtmlparse.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = myhtmlparse.cc; path = "Kiwix/libkiwix/C&C++/xapian/myhtmlparse.cc"; sourceTree = ""; }; 975227AA1D020D83001D1DDE /* ZimIndexer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZimIndexer.h; path = Kiwix/libkiwix/ZimIndexer.h; sourceTree = ""; }; 975227AB1D020D83001D1DDE /* ZimIndexer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ZimIndexer.mm; path = Kiwix/libkiwix/ZimIndexer.mm; sourceTree = ""; }; 975227AD1D0213D3001D1DDE /* xapianIndexer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = xapianIndexer.cpp; path = "Kiwix/libkiwix/C&C++/xapianIndexer.cpp"; sourceTree = ""; tabWidth = 2; }; @@ -824,10 +818,6 @@ 975227921D020C00001D1DDE /* indexer.cpp */, 97497B5E1D07584100ECD691 /* xapianIndexer.h */, 975227AD1D0213D3001D1DDE /* xapianIndexer.cpp */, - 97497B5C1D074FB800ECD691 /* htmlparse.h */, - 975227A61D020C2E001D1DDE /* htmlparse.cc */, - 97497B5D1D074FB800ECD691 /* myhtmlparse.h */, - 975227A71D020C2E001D1DDE /* myhtmlparse.cc */, 975227931D020C00001D1DDE /* otherTools.cpp */, ); name = indexer; @@ -1565,7 +1555,6 @@ 975B912F1CEB9B0F00D13906 /* Preference.swift in Sources */, 971187941CEB541A00B9909D /* Article.swift in Sources */, 9752279D1D020C00001D1DDE /* pathTools.cpp in Sources */, - 975227A91D020C2E001D1DDE /* myhtmlparse.cc in Sources */, 975227B01D021539001D1DDE /* IndexerController.swift in Sources */, 975334D01CEB6AE3007ED50B /* PreferenceGeneralController.swift in Sources */, 979CB6C81D05CF37005E1BA1 /* SearchResultController.swift in Sources */, @@ -1579,7 +1568,6 @@ 975334D21CEB6B01007ED50B /* LibraryController.swift in Sources */, 975227AC1D020D83001D1DDE /* ZimIndexer.mm in Sources */, 975227A11D020C00001D1DDE /* resourceTools.cpp in Sources */, - 975227A81D020C2E001D1DDE /* htmlparse.cc in Sources */, 971187971CEB542500B9909D /* Article+CoreDataProperties.swift in Sources */, 975227A31D020C00001D1DDE /* stringTools.cpp in Sources */, 979C518D1CECAE4C001707F2 /* PreferenceWindowController.swift in Sources */, diff --git a/Kiwix/libkiwix/ZimReader.mm b/Kiwix/libkiwix/ZimReader.mm index 8ffdcdd6..8ac820ec 100755 --- a/Kiwix/libkiwix/ZimReader.mm +++ b/Kiwix/libkiwix/ZimReader.mm @@ -32,11 +32,24 @@ } try { - NSString *zimPath = [url absoluteString]; - zimPath = [zimPath stringByReplacingOccurrencesOfString:@".zimaa" withString:@".zim"]; - NSURL *xapianURl = [[NSURL fileURLWithPath:zimPath] URLByAppendingPathExtension:@"idx"]; - _db = new Xapian::Database([xapianURl fileSystemRepresentation]); - } catch (const Xapian::DatabaseOpeningError &e) {} + zim::File zimFileHandle = *_reader->getZimFileHandler(); + zim::Article xapianArticle = zimFileHandle.getArticle('Z', "/Z/fulltextIndex/xapian"); + if (xapianArticle.good()) { + zim::offset_type dbOffset = xapianArticle.getOffset(); + int databasefd = open([url fileSystemRepresentation], O_RDONLY); + lseek(databasefd, dbOffset, SEEK_SET); + _db = new Xapian::Database(databasefd); + } else { + throw "xapian db not in zim"; + } + } catch (...) { + try { + NSString *zimPath = [url absoluteString]; + zimPath = [zimPath stringByReplacingOccurrencesOfString:@".zimaa" withString:@".zim"]; + NSURL *xapianURl = [[NSURL fileURLWithPath:zimPath] URLByAppendingPathExtension:@"idx"]; + _db = new Xapian::Database([xapianURl fileSystemRepresentation]); + } catch (const Xapian::DatabaseOpeningError &e) {} + } self.fileURL = url; } diff --git a/Kiwix/libkiwix/build/build-xapian.sh b/Kiwix/libkiwix/build/build-xapian.sh index 1764fb6d..0cd6b58a 100755 --- a/Kiwix/libkiwix/build/build-xapian.sh +++ b/Kiwix/libkiwix/build/build-xapian.sh @@ -1,12 +1,12 @@ #!/bin/bash +# regarding export MACOSX_DEPLOYMENT_TARGET="10.4" in build_iOS, see reason why do it like this +# http://stackoverflow.com/questions/32622284/building-c-static-libraries-using-configure-make-with-fembed-bitcode-fails + ROOT=$(pwd) ######################## XAPIAN ######################## -XAPIANPATH=$ROOT/xapian-core-1.4.0 -cd $XAPIANPATH - build_iOS() { ARCH=$1 @@ -18,19 +18,24 @@ build_iOS() SDKROOT="$(xcodebuild -version -sdk iphoneos | grep -E '^Path' | sed 's/Path: //')" fi - export CC="$(xcrun -sdk iphoneos -find clang)" + export MACOSX_DEPLOYMENT_TARGET="10.4" + + export CC="$(xcrun -find clang)" export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -miphoneos-version-min=9.0" export CPP="$CC -E" export CPPFLAGS="$CFLAGS" + export CXX="$(xcrun -find clang++)" + export CXXFLAGS="$CFLAGS -stdlib=libc++ -std=c++11" + export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT" if [ $ARCH == "i386" ] || [ $ARCH == "x86_64" ]; then - ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=i686-apple-darwin11 --enable-static --disable-shared + ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=i686-apple-darwin11 --enable-static --enable-shared else - ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=arm-apple-darwin --enable-static --disable-shared + ./configure --prefix=$(pwd)/build/iOS/$ARCH --host=arm-apple-darwin --enable-static --enable-shared fi make && make install && make clean @@ -44,10 +49,13 @@ build_OSX() export MACOSX_DEPLOYMENT_TARGET="10.10" - export CC="$(xcrun -sdk macosx10.11 -find clang)" + export CC="$(xcrun -find clang)" export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -mmacosx-version-min=10.10" - export CXX="$(xcrun -sdk macosx10.11 -find clang++)" + export CPP="$CC -E" + export CPPFLAGS="$CFLAGS" + + export CXX="$(xcrun -find clang++)" export CXXFLAGS="$CFLAGS -stdlib=libc++ -std=c++11" export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT" @@ -57,6 +65,28 @@ build_OSX() make && make install && make clean } +distribute_iOS() { + iOSBUILDDir=$(pwd)/build/iOS + cd $iOSBUILDDir + mkdir -p universal/lib + + cd armv7/lib + for file in *.a + do + cd $iOSBUILDDir + lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + done + + cd armv7/lib + for file in *.dylib + do + cd $iOSBUILDDir + lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + done + + cp -r armv7/include universal +} + distribute() { cd $XAPIANPATH/build mkdir -p Universal/iOS/lib @@ -86,9 +116,10 @@ distribute() { # build_iOS armv7 # build_iOS armv7s # build_iOS arm64 +distribute_iOS # build_OSX i386 # build_OSX x86_64 -distribute +# distribute diff --git a/Kiwix/libkiwix/build/build-zim.sh b/Kiwix/libkiwix/build/build-zim.sh index e61f6aa0..84118155 100755 --- a/Kiwix/libkiwix/build/build-zim.sh +++ b/Kiwix/libkiwix/build/build-zim.sh @@ -1,5 +1,8 @@ #!/bin/bash +# regarding export MACOSX_DEPLOYMENT_TARGET="10.4" in build_iOS, see reason why do it like this +# http://stackoverflow.com/questions/32622284/building-c-static-libraries-using-configure-make-with-fembed-bitcode-fails + ROOT=$(pwd) ########################## ZIM ########################## @@ -7,11 +10,7 @@ ROOT=$(pwd) # git clone https://gerrit.wikimedia.org/r/p/openzim.git # modify ffstream.cpp, replace stat64 with stat -LZMAHEADERPATH="/Volumes/Data/Developer/build/xz-5.2.2/build/Universal/include" -ZIMREADERPATH=$ROOT/openzim/zimlib -cd $ZIMREADERPATH - -# ./autogen.sh +LZMAHEADERPATH="/Volumes/Data/Developer/Kiwix/Kiwix/libkiwix/include" build_iOS() { @@ -24,12 +23,17 @@ build_iOS() SDKROOT="$(xcodebuild -version -sdk iphoneos | grep -E '^Path' | sed 's/Path: //')" fi - export CC="$(xcrun -sdk iphoneos -find clang)" + export MACOSX_DEPLOYMENT_TARGET="10.4" + + export CC="$(xcrun -find clang)" export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -miphoneos-version-min=9.0 -I$LZMAHEADERPATH" export CPP="$CC -E" export CPPFLAGS="$CFLAGS" + export CXX="$(xcrun -find clang++)" + export CXXFLAGS="$CFLAGS -stdlib=libc++ -std=c++11" + export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT" if [ $ARCH == "i386" ] || [ $ARCH == "x86_64" ]; @@ -63,6 +67,28 @@ build_OSX() make && make install && make clean } +distribute_iOS() { + iOSBUILDDir=$(pwd)/build/iOS + cd $iOSBUILDDir + mkdir -p universal/lib + + cd armv7/lib + for file in *.a + do + cd $iOSBUILDDir + lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + done + + # cd armv7/lib + # for file in *.dylib + # do + # cd $iOSBUILDDir + # lipo -create armv7/lib/$file armv7s/lib/$file arm64/lib/$file x86_64/lib/$file i386/lib/$file -output universal/lib/$file + # done + + cp -r armv7/include universal +} + distribute() { cd $ZIMREADERPATH/build mkdir -p Universal/iOS/lib @@ -92,9 +118,10 @@ distribute() { # build_iOS armv7 # build_iOS armv7s # build_iOS arm64 +distribute_iOS # build_OSX i386 # build_OSX x86_64 -distribute +# distribute diff --git a/Podfile.lock b/Podfile.lock index 9e18de31..91b6ca7c 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,6 +1,6 @@ PODS: - DateTools (1.7.0) - - DZNEmptyDataSet (1.8) + - DZNEmptyDataSet (1.8.1) - Operations (3.0.0): - Operations/Standard (= 3.0.0) - Operations/Standard (3.0.0) @@ -14,7 +14,7 @@ DEPENDENCIES: SPEC CHECKSUMS: DateTools: 53288ee8b905fdc75897a1e6b5cc0144b14cba60 - DZNEmptyDataSet: d2351b2e8daefa40433ef292e246e21f6be31a7b + DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 Operations: c05cc4b2ad060201ab98cbacd5217876658b5f2c SwiftyUserDefaults: e7c8197a9d4068702e7f2406a968cae413b8de27