Motivated by recent problems building the SC 1.0.15 spec update - will import to VulkanSC-Headers and tweak once it's proven out for Vulkan-Headers. The Makefile may need to be modified when directory structure is changed or new files are added.
42 lines
1.7 KiB
Python
Executable file
42 lines
1.7 KiB
Python
Executable file
#!/usr/bin/python3
|
|
#
|
|
# Copyright 2023-2024 The Khronos Group Inc.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import argparse
|
|
import xml.etree.ElementTree as etree
|
|
from reg import stripNonmatchingAPIs
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(prog='stripAPI',
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
description='''\
|
|
Filters out elements with non-matching explicit 'api' attributes from API XML.
|
|
To remove Vulkan SC-only elements from the combined API XML:
|
|
python3 scripts/stripAPI.py -input xml/vk.xml -output vulkan-only.xml -keepAPI vulkan
|
|
To remove Vulkan-only elements:
|
|
python3 scripts/stripAPI.py -input xml/vk.xml -output vulkansc-only.xml -keepAPI vulkansc
|
|
If you are parsing the XML yourself but using the xml.etree package, the
|
|
equivalent runtime code is:
|
|
import reg
|
|
reg.stripNonmatchingAPIs(tree.getroot(), keepAPI, actuallyDelete=True)
|
|
where 'tree' is an ElementTree created from the XML file using
|
|
etree.parse(filename)''')
|
|
|
|
parser.add_argument('-input', action='store',
|
|
required=True,
|
|
help='Specify input registry XML')
|
|
parser.add_argument('-output', action='store',
|
|
required=True,
|
|
help='Specify output registry XML')
|
|
parser.add_argument('-keepAPI', action='store',
|
|
default=None,
|
|
help='Specify API name whose \'api\' tags are kept')
|
|
|
|
args = parser.parse_args()
|
|
|
|
tree = etree.parse(args.input)
|
|
if args.keepAPI is not None:
|
|
stripNonmatchingAPIs(tree.getroot(), args.keepAPI, actuallyDelete = True)
|
|
tree.write(args.output)
|
|
|