Suppressed some iOS framework compilation warnings
This commit is contained in:
parent
22ff1e8826
commit
f379bcc6d3
@ -25,7 +25,18 @@ The script should handle minor OpenCV updates efficiently
|
||||
However, opencv2.framework directory is erased and recreated on each run.
|
||||
"""
|
||||
|
||||
import glob, re, os, os.path, shutil, string, sys
|
||||
import glob, re, os, os.path, shutil, string, sys, exceptions, subprocess
|
||||
|
||||
def execute(cmd):
|
||||
try:
|
||||
print >>sys.stderr, "Executing:", cmd
|
||||
retcode = subprocess.call(cmd, shell=True)
|
||||
if retcode < 0:
|
||||
raise Exception("Child was terminated by signal:", -retcode)
|
||||
elif retcode > 0:
|
||||
raise Exception("Child returned:", retcode)
|
||||
except OSError as e:
|
||||
raise Exception("Execution failed:", e)
|
||||
|
||||
def build_opencv(srcroot, buildroot, target, arch):
|
||||
"builds OpenCV for device or simulator"
|
||||
@ -48,17 +59,17 @@ def build_opencv(srcroot, buildroot, target, arch):
|
||||
|
||||
# if cmake cache exists, just rerun cmake to update OpenCV.xcodeproj if necessary
|
||||
if os.path.isfile(os.path.join(builddir, "CMakeCache.txt")):
|
||||
os.system("cmake %s ." % (cmakeargs,))
|
||||
execute("cmake %s ." % (cmakeargs,))
|
||||
else:
|
||||
os.system("cmake %s %s" % (cmakeargs, srcroot))
|
||||
execute("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 IPHONEOS_DEPLOYMENT_TARGET=6.0 -parallelizeTargets ARCHS=%s -jobs 8 -sdk %s -configuration Release -target ALL_BUILD" % (arch, target.lower()))
|
||||
os.system("xcodebuild IPHONEOS_DEPLOYMENT_TARGET=6.0 ARCHS=%s -sdk %s -configuration Release -target install install" % (arch, target.lower()))
|
||||
execute("xcodebuild IPHONEOS_DEPLOYMENT_TARGET=6.0 -parallelizeTargets ARCHS=%s -jobs 8 -sdk %s -configuration Release -target ALL_BUILD" % (arch, target.lower()))
|
||||
execute("xcodebuild IPHONEOS_DEPLOYMENT_TARGET=6.0 ARCHS=%s -sdk %s -configuration Release -target install install" % (arch, target.lower()))
|
||||
os.chdir(currdir)
|
||||
|
||||
def put_framework_together(srcroot, dstroot):
|
||||
@ -86,7 +97,7 @@ def put_framework_together(srcroot, dstroot):
|
||||
|
||||
# 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")
|
||||
execute("lipo -create " + wlist + " -o " + dstdir + "/opencv2")
|
||||
|
||||
# copy Info.plist
|
||||
shutil.copyfile(tdir0 + "/ios/Info.plist", dstdir + "/Resources/Info.plist")
|
||||
@ -101,10 +112,13 @@ def put_framework_together(srcroot, dstroot):
|
||||
def build_framework(srcroot, dstroot):
|
||||
"main function to do all the work"
|
||||
|
||||
targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
|
||||
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]
|
||||
for i in range(len(targets)):
|
||||
build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i])
|
||||
targets = [("armv7", "iPhoneOS"),
|
||||
("armv7s", "iPhoneOS"),
|
||||
("arm64", "iPhoneOS"),
|
||||
("i386", "iPhoneSimulator"),
|
||||
("x86_64", "iPhoneSimulator")]
|
||||
for t in targets:
|
||||
build_opencv(srcroot, os.path.join(dstroot, "build"), t[1], t[0])
|
||||
|
||||
put_framework_together(srcroot, dstroot)
|
||||
|
||||
@ -114,4 +128,8 @@ if __name__ == "__main__":
|
||||
print "Usage:\n\t./build_framework.py <outputdir>\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]))
|
||||
try:
|
||||
build_framework(os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "../..")), os.path.abspath(sys.argv[1]))
|
||||
except Exception as e:
|
||||
print >>sys.stderr, e
|
||||
sys.exit(1)
|
||||
|
@ -40,10 +40,16 @@ set (CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
|
||||
|
||||
# Hidden visibilty is required for cxx on iOS
|
||||
set (CMAKE_C_FLAGS "")
|
||||
set (CMAKE_CXX_FLAGS "-stdlib=libc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden")
|
||||
|
||||
set (CMAKE_CXX_FLAGS "-stdlib=libc++ -fvisibility=hidden -fvisibility-inlines-hidden")
|
||||
set (CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 -fomit-frame-pointer -ffast-math")
|
||||
|
||||
# Silence some warnings
|
||||
set (no_warn "-Wno-unused-function -Wno-unused-parameter -Wno-strict-prototypes -Wno-missing-prototypes -Wno-missing-declarations -Wno-unused-const-variable -Wno-overloaded-virtual")
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${no_warn}")
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${no_warn}")
|
||||
# Additional linker flag
|
||||
set (CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names ${CMAKE_CXX_LINK_FLAGS}")
|
||||
|
||||
if (HAVE_FLAG_SEARCH_PATHS_FIRST)
|
||||
set (CMAKE_C_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
|
||||
set (CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
|
||||
|
Loading…
Reference in New Issue
Block a user