76 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| def substitute(build, output_dir):
 | |
| 
 | |
|     # setup the template engine
 | |
|     template_dir = os.path.join(os.path.dirname(__file__), 'templates')
 | |
|     jtemplate    = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True)
 | |
| 
 | |
|     # add the filters
 | |
|     jtemplate.filters['csv'] = csv
 | |
|     jtemplate.filters['stripExtraSpaces'] = stripExtraSpaces
 | |
| 
 | |
|     # load the template
 | |
|     template = jtemplate.get_template('template_build_info.m')
 | |
| 
 | |
|     # create the build directory
 | |
|     output_dir  = output_dir+'/+cv'
 | |
|     if not os.path.isdir(output_dir):
 | |
|       os.mkdir(output_dir)
 | |
| 
 | |
|     # populate template
 | |
|     populated = template.render(build=build, time=time)
 | |
|     with open(os.path.join(output_dir, 'buildInformation.m'), 'wb') as f:
 | |
|         f.write(populated)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     """
 | |
|     Usage: python build_info.py --jinja2 /path/to/jinja2/engine
 | |
|                                 --os os_version_string
 | |
|                                 --arch [bitness processor]
 | |
|                                 --compiler [id version]
 | |
|                                 --mex_arch arch_string
 | |
|                                 --mex_script /path/to/mex/script
 | |
|                                 --cxx_flags [-list -of -flags -to -passthrough]
 | |
|                                 --opencv_version version_string
 | |
|                                 --commit commit_hash_if_using_git
 | |
|                                 --modules [core imgproc highgui etc]
 | |
|                                 --configuration Debug/Release
 | |
|                                 --outdir /path/to/write/build/info
 | |
| 
 | |
|     build_info.py generates a Matlab function that can be invoked with a call to
 | |
|       >> cv.buildInformation();
 | |
| 
 | |
|     This function prints a summary of the user's OS, OpenCV and Matlab build
 | |
|     given the information passed to this module. build_info.py invokes Jinja2
 | |
|     on the template_build_info.m template.
 | |
|     """
 | |
| 
 | |
|     # parse the input options
 | |
|     import sys, re, os, time
 | |
|     from argparse import ArgumentParser
 | |
|     parser = ArgumentParser()
 | |
|     parser.add_argument('--jinja2')
 | |
|     parser.add_argument('--os')
 | |
|     parser.add_argument('--arch', nargs=2)
 | |
|     parser.add_argument('--compiler', nargs='+')
 | |
|     parser.add_argument('--mex_arch')
 | |
|     parser.add_argument('--mex_script')
 | |
|     parser.add_argument('--mex_opts', default=['-largeArrayDims'], nargs='*')
 | |
|     parser.add_argument('--cxx_flags', default=[], nargs='*')
 | |
|     parser.add_argument('--opencv_version', default='', nargs='?')
 | |
|     parser.add_argument('--commit', default='Not in working git tree', nargs='?')
 | |
|     parser.add_argument('--modules', nargs='+')
 | |
|     parser.add_argument('--configuration')
 | |
|     parser.add_argument('--outdir')
 | |
|     build = parser.parse_args()
 | |
| 
 | |
|     # add jinja to the path
 | |
|     sys.path.append(build.jinja2)
 | |
| 
 | |
|     from filters import *
 | |
|     from jinja2 import Environment, FileSystemLoader
 | |
| 
 | |
|     # populate the build info template
 | |
|     substitute(build, build.outdir)
 | 
