diff --git a/ios/Info.plist.in b/ios/Info.plist.in
new file mode 100644
index 000000000..9b3d882a7
--- /dev/null
+++ b/ios/Info.plist.in
@@ -0,0 +1,18 @@
+
+
+
+
+ CFBundleName
+ OpenCV
+ CFBundleIdentifier
+ com.itseez.opencv
+ CFBundleVersion
+ ${VERSION}
+ CFBundleShortVersionString
+ ${VERSION}
+ CFBundleSignature
+ ????
+ CFBundlePackageType
+ FMWK
+
+
diff --git a/ios/build_framework.py b/ios/build_framework.py
new file mode 100755
index 000000000..e5c8b1683
--- /dev/null
+++ b/ios/build_framework.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+"""
+The script builds OpenCV.framework for iOS.
+The built framework is universal, it can be used to build app and run it on either iOS simulator or real device.
+
+Usage:
+ ./build_framework.py
+
+By cmake conventions (and especially if you work with OpenCV SVN repository),
+the output dir should not be a subdirectory of OpenCV source tree.
+
+Script will create , if it's missing, and a few its subdirectories:
+
+
+ build/
+ iPhoneOS/
+ [cmake-generated build tree for an iOS device target]
+ iPhoneSimulator/
+ [cmake-generated build tree for iOS simulator]
+ OpenCV.framework/
+ [the framework content]
+
+The script should handle minor OpenCV updates efficiently
+- it does not recompile the library from scratch each time.
+However, OpenCV.framework directory is erased and recreated on each run.
+"""
+
+import glob, re, os, os.path, shutil, string, sys
+
+def build_opencv(srcroot, buildroot, target):
+ "builds OpenCV for device or simulator"
+
+ builddir = os.path.join(buildroot, target)
+ if not os.path.isdir(builddir):
+ os.makedirs(builddir)
+ currdir = os.getcwd()
+ os.chdir(builddir)
+ # for some reason, if you do not specify CMAKE_BUILD_TYPE, it puts libs to "RELEASE" rather than "Release"
+ cmakeargs = ("-GXcode " +
+ "-DCMAKE_BUILD_TYPE=Release " +
+ "-DCMAKE_TOOLCHAIN_FILE=%s/ios/cmake/Toolchains/Toolchain-%s_Xcode.cmake " +
+ "-DBUILD_opencv_world=ON " +
+ "-DCMAKE_INSTALL_PREFIX=install") % (srcroot, target)
+ # if cmake cache exists, just rerun cmake to update OpenCV.xproj if necessary
+ if os.path.isfile(os.path.join(builddir, "CMakeCache.txt")):
+ os.system("cmake %s ." % (cmakeargs,))
+ else:
+ os.system("cmake %s %s" % (cmakeargs, srcroot))
+
+ for wlib in [builddir + "/modules/world/UninstalledProducts/libopencv_world.a",
+ builddir + "/lib/Release/libopencv_world.a"]:
+ if os.path.isfile(wlib):
+ os.remove(wlib)
+
+ os.system("xcodebuild -parallelizeTargets -jobs 8 -sdk %s -configuration Release -target ALL_BUILD" % target.lower())
+ os.system("xcodebuild -sdk %s -configuration Release -target install install" % target.lower())
+ os.chdir(currdir)
+
+def put_framework_together(srcroot, dstroot):
+ "constructs the framework directory after all the targets are built"
+
+ # find the list of targets (basically, ["iPhoneOS", "iPhoneSimulator"])
+ targetlist = glob.glob(os.path.join(dstroot, "build", "*"))
+ targetlist = [os.path.basename(t) for t in targetlist]
+
+ # set the current dir to the dst root
+ currdir = os.getcwd()
+ framework_dir = dstroot + "/opencv2.framework"
+ if os.path.isdir(framework_dir):
+ shutil.rmtree(framework_dir)
+ os.makedirs(framework_dir)
+ os.chdir(framework_dir)
+
+ # determine OpenCV version (without subminor part)
+ tdir0 = "../build/" + targetlist[0]
+ cfg = open(tdir0 + "/cvconfig.h", "rt")
+ for l in cfg.readlines():
+ if l.startswith("#define VERSION"):
+ opencv_version = l[l.find("\"")+1:l.rfind(".")]
+ break
+ cfg.close()
+
+ # form the directory tree
+ dstdir = "Versions/A"
+ os.makedirs(dstdir + "/Resources")
+
+ # copy headers
+ shutil.copytree(tdir0 + "/install/include/opencv2", dstdir + "/Headers")
+
+ # make universal static lib
+ wlist = " ".join(["../build/" + t + "/lib/Release/libopencv_world.a" for t in targetlist])
+ os.system("lipo -create " + wlist + " -o " + dstdir + "/opencv2")
+
+ # form Info.plist
+ srcfile = open(srcroot + "/ios/Info.plist.in", "rt")
+ dstfile = open(dstdir + "/Resources/Info.plist", "wt")
+ for l in srcfile.readlines():
+ dstfile.write(l.replace("${VERSION}", opencv_version))
+ srcfile.close()
+ dstfile.close()
+
+ # copy cascades
+ # TODO ...
+
+ # make symbolic links
+ os.symlink(dstdir + "/Headers", "Headers")
+ os.symlink(dstdir + "/Resources", "Resources")
+ os.symlink(dstdir + "/opencv2", "opencv2")
+ os.symlink("A", "Versions/Current")
+
+
+def build_framework(srcroot, dstroot):
+ "main function to do all the work"
+
+ for target in ["iPhoneOS", "iPhoneSimulator"]:
+ build_opencv(srcroot, os.path.join(dstroot, "build"), target)
+
+ put_framework_together(srcroot, dstroot)
+
+
+if __name__ == "__main__":
+ if len(sys.argv) != 2:
+ print "Usage:\n\t./build_framework.py \n\n"
+ sys.exit(0)
+
+ build_framework(os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "..")), os.path.abspath(sys.argv[1]))
diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp
index a038c9a53..d27fc07ed 100644
--- a/modules/core/src/persistence.cpp
+++ b/modules/core/src/persistence.cpp
@@ -46,7 +46,21 @@
#include
#include
#include
+
+#define USE_ZLIB 1
+
+#ifdef __APPLE__
+# include "TargetConditionals.h"
+# if (defined TARGET_OS_IPHONE && TARGET_OS_IPHONE) || (defined TARGET_IPHONE_SIMULATOR && TARGET_IPHONE_SIMULATOR)
+# undef USE_ZLIB
+# define USE_ZLIB 0
+ typedef void* gzFile;
+# endif
+#endif
+
+#if USE_ZLIB
#include
+#endif
/****************************************************************************************\
* Common macros and type definitions *
@@ -258,8 +272,10 @@ static void icvPuts( CvFileStorage* fs, const char* str )
std::copy(str, str + strlen(str), std::back_inserter(*fs->outbuf));
else if( fs->file )
fputs( str, fs->file );
+#if USE_ZLIB
else if( fs->gzfile )
gzputs( fs->gzfile, str );
+#endif
else
CV_Error( CV_StsError, "The storage is not opened" );
}
@@ -286,8 +302,10 @@ static char* icvGets( CvFileStorage* fs, char* str, int maxCount )
}
if( fs->file )
return fgets( str, maxCount, fs->file );
+#if USE_ZLIB
if( fs->gzfile )
return gzgets( fs->gzfile, str, maxCount );
+#endif
CV_Error( CV_StsError, "The storage is not opened" );
return 0;
}
@@ -298,8 +316,10 @@ static int icvEof( CvFileStorage* fs )
return fs->strbufpos >= fs->strbufsize;
if( fs->file )
return feof(fs->file);
+#if USE_ZLIB
if( fs->gzfile )
return gzeof(fs->gzfile);
+#endif
return false;
}
@@ -307,8 +327,10 @@ static void icvCloseFile( CvFileStorage* fs )
{
if( fs->file )
fclose( fs->file );
+#if USE_ZLIB
else if( fs->gzfile )
gzclose( fs->gzfile );
+#endif
fs->file = 0;
fs->gzfile = 0;
fs->strbuf = 0;
@@ -320,8 +342,10 @@ static void icvRewind( CvFileStorage* fs )
{
if( fs->file )
rewind(fs->file);
+#if USE_ZLIB
else if( fs->gzfile )
gzrewind(fs->gzfile);
+#endif
fs->strbufpos = 0;
}
@@ -2713,10 +2737,14 @@ cvOpenFileStorage( const char* filename, CvMemStorage* dststorage, int flags, co
}
else
{
+ #if USE_ZLIB
char mode[] = { fs->write_mode ? 'w' : 'r', 'b', compression ? compression : '3', '\0' };
fs->gzfile = gzopen(fs->filename, mode);
if( !fs->gzfile )
goto _exit_;
+ #else
+ CV_Error(CV_StsNotImplemented, "There is no compressed file storage support in this configuration");
+ #endif
}
}
diff --git a/modules/world/CMakeLists.txt b/modules/world/CMakeLists.txt
new file mode 100644
index 000000000..383b3cf87
--- /dev/null
+++ b/modules/world/CMakeLists.txt
@@ -0,0 +1,102 @@
+if(NOT IOS)
+ ocv_module_disable(world)
+endif()
+
+set(the_description "All the selected OpenCV modules in a single binary")
+set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)
+set(BUILD_opencv_world_INIT OFF)
+
+if(IOS OR NOT BUILD_SHARED_LIBS)
+ set(OPENCV_MODULE_TYPE STATIC)
+ set(OPENCV_WORLD_FLAGS_PROPERTY STATIC_LIBRARY_FLAGS)
+else()
+ set(OPENCV_WORLD_FLAGS_PROPERTY LINK_FLAGS)
+endif()
+
+ocv_add_module(world opencv_core)
+
+if(MSVC)
+ foreach(_var CMAKE_EXE_LINKER_FLAGS_RELEASE CMAKE_MODULE_LINKER_FLAGS_RELEASE CMAKE_SHARED_LINKER_FLAGS_RELEASE
+ CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_MODULE_LINKER_FLAGS_DEBUG CMAKE_SHARED_LINKER_FLAGS_DEBUG)
+ string(REPLACE "/INCREMENTAL:NO" "/INCREMENTAL:YES" ${_var} "${${_var}}")
+ endforeach()
+endif()
+
+ocv_glob_module_sources()
+ocv_module_include_directories()
+ocv_create_module(SKIP_LINK)
+
+#TODO: try to use try_compile to find real object file extension/location
+if(CMAKE_GENERATOR MATCHES "^Visual.*$")
+ set(have_cfg 1)
+ set(objpath0 ".dir//.obj")
+elseif (CMAKE_GENERATOR MATCHES Xcode)
+ set(have_cfg 1)
+ set(objpath0 "OpenCV.build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/.build/Objects-normal/$(CURRENT_ARCH)/.o")
+else()
+ set(have_cfg 0)
+ set(objpath0 "CMakeFiles/.dir/.o")
+ if(MINGW OR MSVC)
+ set(objpath0 "${objpath0}bj")
+ endif()
+endif()
+
+set(objlist "")
+foreach(m ${OPENCV_MODULE_${the_module}_DEPS})
+ # build order dependencies
+ add_dependencies(${the_module} ${m})
+ # link dependencies
+ string(REGEX REPLACE "(general|debug|optimized);opencv_[^;]*(;|$)" "" _link_deps "${${m}_LIB_DEPENDS}")
+ if(_link_deps)
+ target_link_libraries(${the_module} ${_link_deps})
+ endif()
+
+ string(REGEX REPLACE "" "${m}" objpath1 "${${m}_BINARY_DIR}/${objpath0}")
+ foreach(srcname ${OPENCV_MODULE_${m}_SOURCES})
+ if(srcname MATCHES "\\.(cpp|mm|c|cxx|cc|o|obj)$")
+ if(srcname MATCHES "\\.(o|obj)$")
+ if(IS_ABSOLUTE "${srcname}")
+ set(objpath3 "${srcname}")
+ else()
+ set(objpath3 "${${m}_SOURCE_DIR}/${srcname}")
+ endif()
+ else()
+ if(IS_ABSOLUTE "${srcname}")
+ if(srcname MATCHES "/(qrc|moc)_[^/]*\\.cxx$")
+ # QT generated sources
+ file(RELATIVE_PATH srcname "${${m}_BINARY_DIR}" "${srcname}")
+ else()
+ file(RELATIVE_PATH srcname "${OPENCV_MODULE_${m}_LOCATION}" "${srcname}")
+ endif()
+ endif()
+ string(REPLACE ".." "__" srcname "${srcname}")
+ get_filename_component(srcname_we ${srcname} NAME_WE)
+ string(REGEX REPLACE "${srcname_we}" objpath2 "${objpath1}")
+ string(REGEX REPLACE "${srcname}" objpath3 "${objpath2}")
+ endif()
+ if(CMAKE_GENERATOR MATCHES Makefiles)
+ file(RELATIVE_PATH objpath4 "${CMAKE_CURRENT_BINARY_DIR}" "${objpath3}")
+ else()
+ set(objpath4 ${objpath3})
+ endif()
+ list(APPEND objlist "\"${objpath4}\"")
+ endif()
+ endforeach()
+endforeach()
+
+string(REPLACE ";" " " objlist "${objlist}")
+
+if(have_cfg)
+ string(REGEX REPLACE "" "Debug" objlist_dbg "${objlist}")
+ string(REGEX REPLACE "" "Release" objlist_rls "${objlist}")
+ set_target_properties(${the_module} PROPERTIES
+ ${OPENCV_WORLD_FLAGS_PROPERTY}_DEBUG ${objlist_dbg}
+ ${OPENCV_WORLD_FLAGS_PROPERTY}_RELEASE ${objlist_rls})
+else()
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/world_objects.list" "${objlist}")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/world_objects.list" "${CMAKE_CURRENT_BINARY_DIR}/world_objects.rsp" OUTPUT_QUIET)
+ set_target_properties(${the_module} PROPERTIES
+ ${OPENCV_WORLD_FLAGS_PROPERTY} "@${CMAKE_CURRENT_BINARY_DIR}/world_objects.rsp")
+endif()
+
+ocv_add_precompiled_headers(${the_module})
diff --git a/modules/world/include/opencv2/world/world.hpp b/modules/world/include/opencv2/world/world.hpp
new file mode 100644
index 000000000..b4bff33a6
--- /dev/null
+++ b/modules/world/include/opencv2/world/world.hpp
@@ -0,0 +1,58 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_WORLD_HPP__
+#define __OPENCV_WORLD_HPP__
+
+#include "opencv2/core/core.hpp"
+
+#ifdef __cplusplus
+namespace cv
+{
+
+CV_EXPORTS_W bool initAll();
+
+}
+
+#endif
+
+#endif
diff --git a/modules/world/src/precomp.cpp b/modules/world/src/precomp.cpp
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/world/src/precomp.hpp b/modules/world/src/precomp.hpp
new file mode 100644
index 000000000..667d2ffa5
--- /dev/null
+++ b/modules/world/src/precomp.hpp
@@ -0,0 +1,66 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#ifndef __OPENCV_PRECOMP_H__
+#define __OPENCV_PRECOMP_H__
+
+#ifdef HAVE_CVCONFIG_H
+#include "cvconfig.h"
+#endif
+
+#include "opencv2/opencv_modules.hpp"
+#ifdef HAVE_OPENCV_VIDEO
+#include "opencv2/video/video.hpp"
+#endif
+#ifdef HAVE_OPENCV_FEATURES2D
+#include "opencv2/features2d/features2d.hpp"
+#endif
+#ifdef HAVE_OPENCV_NONFREE
+#include "opencv2/nonfree/nonfree.hpp"
+#endif
+#ifdef HAVE_OPENCV_ML
+#include "opencv2/ml/ml.hpp"
+#endif
+
+#include "opencv2/world/world.hpp"
+
+#endif
diff --git a/modules/world/src/world_init.cpp b/modules/world/src/world_init.cpp
new file mode 100644
index 000000000..3fd13f392
--- /dev/null
+++ b/modules/world/src/world_init.cpp
@@ -0,0 +1,61 @@
+/*M///////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+//M*/
+
+#include "precomp.hpp"
+
+bool cv::initAll()
+{
+ return true
+#ifdef HAVE_OPENCV_VIDEO
+ && initModule_video()
+#endif
+#ifdef HAVE_OPENCV_FEATURES2D
+ && initModule_features2d()
+#endif
+#ifdef HAVE_OPENCV_NONFREE
+ && initModule_nonfree()
+#endif
+#ifdef HAVE_OPENCV_ML
+ && initModule_ml()
+#endif
+ ;
+}