212 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/python3
 | |
| #
 | |
| # Copyright 2016-2021 The Khronos Group Inc.
 | |
| #
 | |
| # SPDX-License-Identifier: Apache-2.0
 | |
| 
 | |
| import argparse
 | |
| import subprocess
 | |
| import sys
 | |
| 
 | |
| from genspec import *
 | |
| 
 | |
| # Eventually, these may be defined by extDependency.py
 | |
| allVersions = [ 'VK_VERSION_1_0', 'VK_VERSION_1_1', 'VK_VERSION_1_2' ]
 | |
| Version1_1 = [ 'VK_VERSION_1_0', 'VK_VERSION_1_1' ]
 | |
| Version1_0 = [ 'VK_VERSION_1_0' ]
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     parser = argparse.ArgumentParser()
 | |
| 
 | |
|     parser.add_argument('-internal', action='store_true',
 | |
|                         help='Generate internal build, not public')
 | |
|     parser.add_argument('-norefpages', action='store_true',
 | |
|                         help='Do not generate refpages')
 | |
|     parser.add_argument('-singlerefpage', action='store_true',
 | |
|                         help='Generate single-page refpage - NOT SUPPORTED')
 | |
|     parser.add_argument('-chunked', action='store_true',
 | |
|                         help='Generate chunked HTML outputs')
 | |
|     parser.add_argument('-pdf', action='store_true',
 | |
|                         help='Generate PDF outputs')
 | |
| 
 | |
|     parser.add_argument('-nov12', action='store_false', dest='v12',
 | |
|                         help='Suppress Vulkan 1.2 targets')
 | |
|     parser.add_argument('-v11', action='store_true',
 | |
|                         help='Generate Vulkan 1.1 targets')
 | |
|     parser.add_argument('-v10', action='store_true',
 | |
|                         help='Generate Vulkan 1.0 targets')
 | |
| 
 | |
|     parser.add_argument('-nocorespec', action='store_false', dest='corespec',
 | |
|                         help='Do not generate core API-only targets')
 | |
|     parser.add_argument('-nokhrspec', action='store_false', dest='khrspec',
 | |
|                         help='Do not generate core API + KHR extensions-only targets')
 | |
|     parser.add_argument('-noallspec', action='store_false', dest='allspec',
 | |
|                         help='Do not generate full API + all extensions targets')
 | |
| 
 | |
|     parser.add_argument('-genpath', action='store',
 | |
|                         default='gen',
 | |
|                         help='Path to directory containing generated files')
 | |
|     parser.add_argument('-repodir', action='store', dest='repoDir',
 | |
|                         default=None,
 | |
|                         help='Set the repository directory to build from (overrides defaults)')
 | |
|     parser.add_argument('-outdir', action='store', dest='outDir',
 | |
|                         default=None,
 | |
|                         help='Set the output directory to build into (overrides defaults)')
 | |
| 
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     # Ensure gen/extDependency.py is up-to-date before we import it.
 | |
|     # If it is up to date, 'make' will print a useless warning without '-s'.
 | |
|     subprocess.check_call(['make', '-s', 'GENERATED=' + args.genpath, 'extDependency'])
 | |
| 
 | |
|     # Alter sys.path to import extDependency.py
 | |
|     sys.path.insert(0, args.genpath)
 | |
| 
 | |
|     from extDependency import allExts, khrExts
 | |
| 
 | |
|     if args.internal:
 | |
|         # For internal build & pseudo-release
 | |
|         if args.repoDir == None:
 | |
|             args.repoDir = '/home/tree/git/vulkan'
 | |
|         if args.outDir == None:
 | |
|             args.outDir = '/home/tree/git/vulkan/out'
 | |
|     else:
 | |
|         # For public release
 | |
|         if args.repoDir == None:
 | |
|             args.repoDir = '/home/tree/git/Vulkan-Docs'
 | |
|         if args.outDir == None:
 | |
|             args.outDir = '/home/tree/git/registry/vulkan/specs'
 | |
| 
 | |
|     refPageTargets = ''
 | |
| 
 | |
|     if not args.norefpages:
 | |
|         # Generate separate reference pages
 | |
|         refPageTargets += ' manhtmlpages'
 | |
| 
 | |
|     if args.singlerefpage:
 | |
|         # Generate single-page refpage.
 | |
|         refPageTargets += ' manhtml'
 | |
|         if args.pdf:
 | |
|             refPageTargets += ' manpdf'
 | |
|         print('echo Info: single-page refpage targets are NOT SUPPORTED')
 | |
| 
 | |
|     specTargets = ' html'
 | |
|     if args.chunked:
 | |
|         specTargets += ' chunked'
 | |
|     if args.pdf:
 | |
|         specTargets += ' pdf'
 | |
| 
 | |
|     print('echo Info: Building release from', args.repoDir, 'to', args.outDir)
 | |
|     print('echo Info: Building spec targets', specTargets)
 | |
|     print('')
 | |
| 
 | |
|     # Current Vulkan 1.2 specs
 | |
|     if args.v12:
 | |
|         if args.allspec:
 | |
|             # Build ref pages and validusage targets only for 1.2 + all exts
 | |
|             # Formerly set xmlTargets = 'clobber install', but we no longer
 | |
|             # generate headers in the registry tree.
 | |
|             buildBranch(targetDir = '1.2-extensions',
 | |
|                         versions = allVersions,
 | |
|                         extensions = allExts,
 | |
|                         ratified = False,
 | |
|                         apititle = '(with all registered Vulkan extensions)',
 | |
|                         specTargets = specTargets + ' validusage' + refPageTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
| 
 | |
|         if args.khrspec:
 | |
|             buildBranch(targetDir = '1.2-khr-extensions',
 | |
|                         versions = allVersions,
 | |
|                         extensions = khrExts,
 | |
|                         ratified = True,
 | |
|                         apititle = '(with KHR extensions)',
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
| 
 | |
|         if args.corespec:
 | |
|             # Build style guide and registry documentation targets only for 1.2
 | |
|             # + no extensions.
 | |
|             buildBranch(targetDir = '1.2',
 | |
|                         versions = allVersions,
 | |
|                         extensions = None,
 | |
|                         ratified = True,
 | |
|                         apititle = None,
 | |
|                         specTargets = specTargets + ' styleguide registry',
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir,
 | |
|                         needRefSources = True)
 | |
| 
 | |
|     # Vulkan 1.1 specs
 | |
|     if args.v11:
 | |
|         if args.allspec:
 | |
|             buildBranch(targetDir = '1.1-extensions',
 | |
|                         versions = Version1_1,
 | |
|                         extensions = allExts,
 | |
|                         ratified = False,
 | |
|                         apititle = '(with all registered Vulkan extensions)',
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
| 
 | |
|         if args.khrspec:
 | |
|             buildBranch(targetDir = '1.1-khr-extensions',
 | |
|                         versions = Version1_1,
 | |
|                         extensions = khrExts,
 | |
|                         ratified = True,
 | |
|                         apititle = '(with KHR extensions)',
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
| 
 | |
|         if args.corespec:
 | |
|             buildBranch(targetDir = '1.1',
 | |
|                         versions = Version1_1,
 | |
|                         extensions = None,
 | |
|                         ratified = True,
 | |
|                         apititle = None,
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
|     else:
 | |
|         print('echo Info: Not building 1.1 specs yet')
 | |
| 
 | |
| 
 | |
|     # Vulkan 1.0 specs.
 | |
|     if args.v10:
 | |
|         if args.allspec:
 | |
|             buildBranch(targetDir = '1.0-extensions',
 | |
|                         versions = Version1_0,
 | |
|                         extensions = allExts,
 | |
|                         ratified = False,
 | |
|                         apititle = '(with all registered Vulkan extensions)',
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
| 
 | |
|         if args.khrspec:
 | |
|             buildBranch(targetDir = '1.0-wsi_extensions',
 | |
|                         versions = Version1_0,
 | |
|                         extensions = khrExts,
 | |
|                         ratified = True,
 | |
|                         apititle = '(with KHR extensions)',
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
| 
 | |
|         if args.corespec:
 | |
|             buildBranch(targetDir = '1.0',
 | |
|                         versions = Version1_0,
 | |
|                         extensions = None,
 | |
|                         ratified = True,
 | |
|                         apititle = None,
 | |
|                         specTargets = specTargets,
 | |
|                         repoDir = args.repoDir,
 | |
|                         outDir = args.outDir)
 | |
|     else:
 | |
|         print('echo Info: Not building 1.0 specs yet')
 | |
| 
 | |
|     print('echo Info: post-generation cleanup')
 | |
|     createTags(releaseNum(), buildOnFriday())
 |