1*1cddb830SAndroid Build Coastguard Worker#!/usr/bin/python3 2*1cddb830SAndroid Build Coastguard Worker 3*1cddb830SAndroid Build Coastguard Worker# Copyright (c) 2020 The Khronos Group Inc. 4*1cddb830SAndroid Build Coastguard Worker# 5*1cddb830SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*1cddb830SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*1cddb830SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*1cddb830SAndroid Build Coastguard Worker# 9*1cddb830SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*1cddb830SAndroid Build Coastguard Worker# 11*1cddb830SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*1cddb830SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*1cddb830SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*1cddb830SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*1cddb830SAndroid Build Coastguard Worker# limitations under the License. 16*1cddb830SAndroid Build Coastguard Worker 17*1cddb830SAndroid Build Coastguard Workerimport gen 18*1cddb830SAndroid Build Coastguard Workerfrom mako.template import Template 19*1cddb830SAndroid Build Coastguard Workerfrom mako.exceptions import RichTraceback 20*1cddb830SAndroid Build Coastguard Worker 21*1cddb830SAndroid Build Coastguard Workerif __name__ == "__main__": 22*1cddb830SAndroid Build Coastguard Worker args = gen.parse_args() 23*1cddb830SAndroid Build Coastguard Worker spec = gen.load_spec(args) 24*1cddb830SAndroid Build Coastguard Worker apisigs = gen.get_apisigs(spec) 25*1cddb830SAndroid Build Coastguard Worker (coreapis, extapis) = gen.get_apis(spec, apisigs) 26*1cddb830SAndroid Build Coastguard Worker 27*1cddb830SAndroid Build Coastguard Worker try: 28*1cddb830SAndroid Build Coastguard Worker # Create the loader cpp file from the API dictionary: 29*1cddb830SAndroid Build Coastguard Worker test = open(args.directory + '/icd_dispatch_generated.c', 'wb') 30*1cddb830SAndroid Build Coastguard Worker icd_dispatch_generated_template = Template(filename='icd_dispatch_generated.c.mako') 31*1cddb830SAndroid Build Coastguard Worker test.write( 32*1cddb830SAndroid Build Coastguard Worker icd_dispatch_generated_template.render_unicode( 33*1cddb830SAndroid Build Coastguard Worker spec=spec, 34*1cddb830SAndroid Build Coastguard Worker apisigs=apisigs, 35*1cddb830SAndroid Build Coastguard Worker coreapis=coreapis, 36*1cddb830SAndroid Build Coastguard Worker extapis=extapis). 37*1cddb830SAndroid Build Coastguard Worker encode('utf-8', 'replace')) 38*1cddb830SAndroid Build Coastguard Worker except: 39*1cddb830SAndroid Build Coastguard Worker traceback = RichTraceback() 40*1cddb830SAndroid Build Coastguard Worker for (filename, lineno, function, line) in traceback.traceback: 41*1cddb830SAndroid Build Coastguard Worker print('%s(%s) : error in %s' % (filename, lineno, function)) 42*1cddb830SAndroid Build Coastguard Worker print(' ', line) 43*1cddb830SAndroid Build Coastguard Worker print('%s: %s' % (str(traceback.error.__class__.__name__), traceback.error)) 44