From a78d143c98d92acc115046b479db13aed9f19557 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 21 Feb 2017 12:50:09 +0300 Subject: [PATCH 1/4] ios framework: refactor code (no functional changes) --- platforms/ios/build_framework.py | 61 +++++++++++++------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/platforms/ios/build_framework.py b/platforms/ios/build_framework.py index 2770a5a102..5b08f69bfe 100644 --- a/platforms/ios/build_framework.py +++ b/platforms/ios/build_framework.py @@ -122,37 +122,32 @@ class Builder: def getCMakeArgs(self, arch, target): - if self.dynamic: - args = [ - "cmake", - "-GXcode", - "-DAPPLE_FRAMEWORK=ON", - "-DCMAKE_INSTALL_PREFIX=install", - "-DCMAKE_BUILD_TYPE=Release", - "-DBUILD_SHARED_LIBS=ON", - "-DCMAKE_MACOSX_BUNDLE=ON", - "-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO", - ] - else: - args = [ - "cmake", - "-GXcode", - "-DAPPLE_FRAMEWORK=ON", - "-DCMAKE_INSTALL_PREFIX=install", - "-DCMAKE_BUILD_TYPE=Release", - ] + args = [ + "cmake", + "-GXcode", + "-DAPPLE_FRAMEWORK=ON", + "-DCMAKE_INSTALL_PREFIX=install", + "-DCMAKE_BUILD_TYPE=Release", + ] + ([ + "-DBUILD_SHARED_LIBS=ON", + "-DCMAKE_MACOSX_BUNDLE=ON", + "-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO", + ] if self.dynamic else []) if len(self.exclude) > 0: args += ["-DBUILD_opencv_world=OFF"] - args += ("-DBUILD_opencv_%s=OFF" % m for m in self.exclude) + args += ["-DBUILD_opencv_%s=OFF" % m for m in self.exclude] return args def getBuildCommand(self, archs, target): + buildcmd = [ + "xcodebuild", + ] + if self.dynamic: - buildcmd = [ - "xcodebuild", + buildcmd += [ "IPHONEOS_DEPLOYMENT_TARGET=8.0", "ONLY_ACTIVE_ARCH=NO", ] @@ -160,25 +155,19 @@ class Builder: for arch in archs: buildcmd.append("-arch") buildcmd.append(arch.lower()) - + else: + arch = ";".join(archs) buildcmd += [ + "IPHONEOS_DEPLOYMENT_TARGET=6.0", + "ARCHS=%s" % arch, + ] + + buildcmd += [ "-sdk", target.lower(), "-configuration", "Release", "-parallelizeTargets", "-jobs", "4", - "-target","ALL_BUILD", - ] - else: - arch = ";".join(archs) - buildcmd = [ - "xcodebuild", - "IPHONEOS_DEPLOYMENT_TARGET=6.0", - "ARCHS=%s" % arch, - "-sdk", target.lower(), - "-configuration", "Release", - "-parallelizeTargets", - "-jobs", "4" - ] + ] + (["-target","ALL_BUILD"] if self.dynamic else []) return buildcmd From f1c8e04268c046fdf82fb2a9534dd6ee9b5436b1 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 21 Feb 2017 12:50:40 +0300 Subject: [PATCH 2/4] ios framework: don't disable opencv_world in dynamic framework --- platforms/ios/build_framework.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/ios/build_framework.py b/platforms/ios/build_framework.py index 5b08f69bfe..a09c2fa916 100644 --- a/platforms/ios/build_framework.py +++ b/platforms/ios/build_framework.py @@ -135,7 +135,7 @@ class Builder: ] if self.dynamic else []) if len(self.exclude) > 0: - args += ["-DBUILD_opencv_world=OFF"] + args += ["-DBUILD_opencv_world=OFF"] if not self.dynamic else [] args += ["-DBUILD_opencv_%s=OFF" % m for m in self.exclude] return args From eaba0e63581e9e4809f3fffcf2f1a8bd4c5342a5 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 21 Feb 2017 12:52:06 +0300 Subject: [PATCH 3/4] cmake: append '-framework UIKit' for videoio/imgcodecs module --- modules/imgcodecs/CMakeLists.txt | 3 +++ modules/videoio/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt index 8da6c176cd..546d956a98 100644 --- a/modules/imgcodecs/CMakeLists.txt +++ b/modules/imgcodecs/CMakeLists.txt @@ -92,6 +92,9 @@ if(IOS) list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/ios_conversions.mm) list(APPEND IMGCODECS_LIBRARIES "-framework Accelerate" "-framework CoreGraphics" "-framework QuartzCore" "-framework AssetsLibrary") endif() +if(APPLE_FRAMEWORK) + list(APPEND IMGCODECS_LIBRARIES "-framework UIKit") +endif() if(UNIX) #these variables are set by CHECK_MODULE macro diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt index 763304adbb..cbcb8a1a63 100644 --- a/modules/videoio/CMakeLists.txt +++ b/modules/videoio/CMakeLists.txt @@ -210,7 +210,7 @@ if(IOS) ${CMAKE_CURRENT_LIST_DIR}/src/cap_ios_video_camera.mm) list(APPEND VIDEOIO_LIBRARIES "-framework Accelerate" "-framework AVFoundation" "-framework CoreGraphics" "-framework CoreImage" "-framework CoreMedia" "-framework CoreVideo" "-framework QuartzCore" "-framework AssetsLibrary") - if(APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) + if(APPLE_FRAMEWORK) list(APPEND VIDEOIO_LIBRARIES "-framework UIKit") endif() endif() From 88a338a3eba4f6f383e251b8ce576ff8237e44dd Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 21 Feb 2017 19:23:37 +0300 Subject: [PATCH 4/4] cmake: disable pkg-config for Apple frameworks --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 71b4b36087..83d567685e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -519,7 +519,9 @@ endif(WIN32 AND NOT MINGW) # CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC.. # ---------------------------------------------------------------------------- if(UNIX) - find_package(PkgConfig QUIET) + if(NOT APPLE_FRAMEWORK) + find_package(PkgConfig QUIET) + endif() include(CheckFunctionExists) include(CheckIncludeFile)