1#!/usr/bin/env python
2"""
3This script runs OpenCV.framework tests for OSX.
4"""
5
6from __future__ import print_function
7import os, os.path, sys, argparse, traceback, multiprocessing
8
9# import common code
10sys.path.insert(0, os.path.abspath(os.path.abspath(os.path.dirname(__file__))+'/../ios'))
11from run_tests import TestRunner
12
13MACOSX_DEPLOYMENT_TARGET='10.12'  # default, can be changed via command line options or environment variable
14
15class OSXTestRunner(TestRunner):
16
17    def getToolchain(self):
18        return None
19
20    def getCMakeArgs(self):
21        args = TestRunner.getCMakeArgs(self)
22        args = args + [
23            '-DMACOSX_DEPLOYMENT_TARGET=%s' % os.environ['MACOSX_DEPLOYMENT_TARGET']
24        ]
25        return args
26
27
28if __name__ == "__main__":
29    script_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
30    parser = argparse.ArgumentParser(description='The script builds OpenCV.framework for OSX.')
31    parser.add_argument('tests_dir', metavar='TEST_DIR', help='folder where test files are located')
32    parser.add_argument('--build_dir', default=None, help='folder where test will be built (default is "../test_build" relative to tests_dir)')
33    parser.add_argument('--framework_dir', default=None, help='folder where OpenCV framework is located')
34    parser.add_argument('--framework_name', default='opencv2', help='Name of OpenCV framework (default: opencv2, will change to OpenCV in future version)')
35    parser.add_argument('--macosx_deployment_target', default=os.environ.get('MACOSX_DEPLOYMENT_TARGET', MACOSX_DEPLOYMENT_TARGET), help='specify MACOSX_DEPLOYMENT_TARGET')
36    parser.add_argument('--platform', default='macOS,arch=x86_64', help='xcodebuild platform parameter (default is macOS)')
37
38    args = parser.parse_args()
39    os.environ['MACOSX_DEPLOYMENT_TARGET'] = args.macosx_deployment_target
40    arch = "x86_64"
41    target = "macOS"
42
43    r = OSXTestRunner(script_dir, args.tests_dir, args.build_dir if args.build_dir else os.path.join(args.tests_dir, "../test_build"), args.framework_dir, args.framework_name, arch, target, args.platform)
44    r.run()
45