| #!/usr/bin/python3 |
| # |
| # Copyright 2016-2023 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 the extdependency module |
| Version1_3 = [ 'VK_VERSION_1_0', 'VK_VERSION_1_1', 'VK_VERSION_1_2', 'VK_VERSION_1_3' ] |
| Version1_2 = [ '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('-nov13', action='store_false', dest='v13', |
| help='Suppress Vulkan 1.3 targets') |
| parser.add_argument('-v12', action='store_true', |
| help='Generate 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('-noratspec', action='store_false', dest='ratspec', |
| help='Do not generate core API + ratified extensions-only targets') |
| parser.add_argument('-noallspec', action='store_false', dest='allspec', |
| help='Do not generate full API + all extensions targets') |
| |
| parser.add_argument('-registry', action='store', |
| default=None, |
| help='Path to API XML registry file specifying version and extension dependencies') |
| parser.add_argument('-apiname', action='store', |
| default=None, |
| help='API name to generate') |
| |
| parser.add_argument('-gitroot', action='store', |
| default='/home/tree/git', |
| help='Set the directory containing gitlab vulkan and github Vulkan-Docs repo clones to build from') |
| 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() |
| |
| # Look for scripts/extdependency.py |
| # This requires makeSpec to be invoked from the repository root, but we |
| # could derive that path. |
| sys.path.insert(0, 'scripts') |
| from extdependency import ApiDependencies |
| |
| deps = ApiDependencies(args.registry, args.apiname) |
| |
| allExts = deps.allExtensions() |
| ratifiedExts = deps.ratifiedExtensions() |
| |
| if args.internal: |
| # For internal build & pseudo-release |
| if args.repoDir is None: |
| args.repoDir = f'{args.gitroot}/vulkan' |
| if args.outDir is None: |
| args.outDir = f'{args.gitroot}/vulkan/out' |
| else: |
| # For public release |
| if args.repoDir is None: |
| args.repoDir = f'{args.gitroot}/Vulkan-Docs' |
| if args.outDir is None: |
| args.outDir = f'{args.gitroot}/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.3 specs |
| if args.v13: |
| if args.allspec: |
| # Build ref pages and validusage targets only for 1.3 + all exts |
| # Formerly set xmlTargets = 'clobber install', but we no longer |
| # generate headers in the registry tree. |
| buildBranch(targetDir = '1.3-extensions', |
| versions = Version1_3, |
| extensions = allExts, |
| ratified = False, |
| apititle = '(with all registered Vulkan extensions)', |
| specTargets = specTargets + ' validusage' + refPageTargets, |
| repoDir = args.repoDir, |
| outDir = args.outDir) |
| |
| if args.ratspec: |
| buildBranch(targetDir = '1.3-khr-extensions', |
| versions = Version1_3, |
| extensions = ratifiedExts, |
| ratified = True, |
| apititle = '(with all ratified extensions)', |
| specTargets = specTargets, |
| repoDir = args.repoDir, |
| outDir = args.outDir) |
| |
| if args.corespec: |
| # Build style guide and registry documentation targets only for 1.3 |
| # + no extensions. |
| buildBranch(targetDir = '1.3', |
| versions = Version1_3, |
| extensions = None, |
| ratified = True, |
| apititle = None, |
| specTargets = specTargets + ' styleguide registry', |
| repoDir = args.repoDir, |
| outDir = args.outDir, |
| needRefSources = True) |
| |
| # Vulkan 1.2 specs |
| if args.v12: |
| if args.allspec: |
| buildBranch(targetDir = '1.2-extensions', |
| versions = Version1_2, |
| extensions = allExts, |
| ratified = False, |
| apititle = '(with all registered Vulkan extensions)', |
| specTargets = specTargets, |
| repoDir = args.repoDir, |
| outDir = args.outDir) |
| |
| if args.ratspec: |
| buildBranch(targetDir = '1.2-khr-extensions', |
| versions = Version1_2, |
| extensions = ratifiedExts, |
| ratified = True, |
| apititle = '(with all ratified 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 = Version1_2, |
| 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.ratspec: |
| buildBranch(targetDir = '1.1-khr-extensions', |
| versions = Version1_1, |
| extensions = ratifiedExts, |
| ratified = True, |
| apititle = '(with all ratified 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.ratspec: |
| buildBranch(targetDir = '1.0-wsi_extensions', |
| versions = Version1_0, |
| extensions = ratifiedExts, |
| ratified = True, |
| apititle = '(with all ratified 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()) |