def makeGenOpts(args): global genOpts genOpts = {} # Extensions to emit (list of extensions) emitExtensions = args.emitExtensions # Features to include (list of features) features = args.feature # Output target directory directory = args.directory # Descriptive names for various regexp patterns used to select # versions and extensions allFeatures = allExtensions = '.*' # Turn lists of names/patterns into matching regular expressions emitExtensionsPat = makeREstring(emitExtensions, allExtensions) featuresPat = makeREstring(features, allFeatures) # Copyright text prefixing all headers (list of strings). prefixStrings = [ '/*', '** Copyright (c) 2017-2022, The Khronos Group Inc.', '**', '** Licensed under the Apache License, Version 2.0 (the "License");', '** you may not use this file except in compliance with the License.', '** You may obtain a copy of the License at', '**', '** http://www.apache.org/licenses/LICENSE-2.0', '**', '** Unless required by applicable law or agreed to in writing, software', '** distributed under the License is distributed on an "AS IS" BASIS,', '** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.', '** See the License for the specific language governing permissions and', '** limitations under the License.', '*/', '' ] # Text specific to OpenXR headers xrPrefixStrings = [ '/*', '** This header is generated from the Khronos OpenXR XML API Registry.', '**', '*/', '' ] # An API style conventions object conventions = OpenXRConventions() if HAVE_CONFORMANCE: genOpts['function_info.cpp'] = [ ConformanceGenerator, AutomaticSourceGeneratorOptions(conventions=conventions, filename='function_info.cpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, prefixText=prefixStrings + xrPrefixStrings, protectFeature=False, protectProto='#ifndef', protectProtoStr='XR_NO_PROTOTYPES', apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *', alignFuncParam=48) ] genOpts['gen_dispatch.cpp'] = [ ConformanceLayerGenerator, AutomaticSourceGeneratorOptions( conventions=conventions, filename='gen_dispatch.cpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *', ) ] genOpts['gen_dispatch.h'] = [ ConformanceLayerGenerator, AutomaticSourceGeneratorOptions( conventions=conventions, filename='gen_dispatch.h', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *', ) ] genOpts['xr_generated_dispatch_table.h'] = [ UtilitySourceOutputGenerator, AutomaticSourceGeneratorOptions( conventions=conventions, filename='xr_generated_dispatch_table.h', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat) ] genOpts['xr_generated_dispatch_table.c'] = [ UtilitySourceOutputGenerator, AutomaticSourceGeneratorOptions( conventions=conventions, filename='xr_generated_dispatch_table.c', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat) ] genOpts['xr_generated_loader.hpp'] = [ LoaderSourceOutputGenerator, AutomaticSourceGeneratorOptions(conventions=conventions, filename='xr_generated_loader.hpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, prefixText=prefixStrings + xrPrefixStrings, protectFeature=False, protectProto='#ifndef', protectProtoStr='XR_NO_PROTOTYPES', apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *', alignFuncParam=48) ] genOpts['xr_generated_loader.cpp'] = [ LoaderSourceOutputGenerator, AutomaticSourceGeneratorOptions(conventions=conventions, filename='xr_generated_loader.cpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, prefixText=prefixStrings + xrPrefixStrings, protectFeature=False, protectProto='#ifndef', protectProtoStr='XR_NO_PROTOTYPES', apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *', alignFuncParam=48) ] # Source files generated for the api_dump layer genOpts['xr_generated_api_dump.cpp'] = [ ApiDumpOutputGenerator, AutomaticSourceGeneratorOptions(conventions=conventions, filename='xr_generated_api_dump.cpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *') ] genOpts['xr_generated_api_dump.hpp'] = [ ApiDumpOutputGenerator, AutomaticSourceGeneratorOptions(conventions=conventions, filename='xr_generated_api_dump.hpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *') ] # Source files generated for the core validation layer genOpts['xr_generated_core_validation.hpp'] = [ ValidationSourceOutputGenerator, AutomaticSourceGeneratorOptions( conventions=conventions, filename='xr_generated_core_validation.hpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *') ] genOpts['xr_generated_core_validation.cpp'] = [ ValidationSourceOutputGenerator, AutomaticSourceGeneratorOptions( conventions=conventions, filename='xr_generated_core_validation.cpp', directory=directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=None, emitExtensions=emitExtensionsPat, apicall='XRAPI_ATTR ', apientry='XRAPI_CALL ', apientryp='XRAPI_PTR *') ]
def genTarget(args): """ Generate a target based on the options in the matching genOpts{} object. This is encapsulated in a function so it can be profiled and/or timed. The args parameter is an parsed argument object containing the following fields that are used: target - target to generate directory - directory to generate it in protect - True if re-inclusion wrappers should be created extensions - list of additional extensions to include in generated interfaces """ # Create generator options with specified parameters header = args.target if 'dispatch' in args.target: # Don't omit anything when generating dispatchers. removeExtensions = None else: removeExtensions = makeREstring(( # Atom not projecting right? "XR_MSFT_controller_model", # Projection of static string fails "XR_MSFT_spatial_graph_bridge", )) # Turn lists of names/patterns into matching regular expressions emitExtensionsPat = makeREstring(args.emitExtensions, '.*') featuresPat = makeREstring(args.feature, '.*') options = AutomaticSourceGeneratorOptions( conventions=OpenXRConventions(), filename=header, directory=args.directory, apiname='openxr', profile=None, versions=featuresPat, emitversions=featuresPat, defaultExtensions='openxr', addExtensions=None, removeExtensions=removeExtensions, emitExtensions=emitExtensionsPat) if not args.quiet: write('* Building', options.filename, file=sys.stderr) write('* options.versions =', options.versions, file=sys.stderr) write('* options.emitversions =', options.emitversions, file=sys.stderr) write('* options.defaultExtensions =', options.defaultExtensions, file=sys.stderr) write('* options.addExtensions =', options.addExtensions, file=sys.stderr) write('* options.removeExtensions =', options.removeExtensions, file=sys.stderr) write('* options.emitExtensions =', options.emitExtensions, file=sys.stderr) startTimer(args.time) gen = CppGenerator(errFile=errWarn, warnFile=errWarn, diagFile=diag, quiet=args.quiet) reg.setGenerator(gen) reg.apiGen(options) if not args.quiet: write('* Generated', options.filename, file=sys.stderr) endTimer(args.time, '* Time to generate ' + options.filename + ' =')