diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-11-30 21:31:11 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-11-30 21:31:11 +0000 |
commit | c57a86e31559ecee42f9429531ad4fd331bf978d (patch) | |
tree | 7133505ef9ee56b47cda7dd37e75f833ef3e6777 /gen_extension_headers.py | |
parent | 0666707e85ef4ed344eab22e9c7240023592ecc4 (diff) | |
parent | 153d3c46363b5b47423e15aab803c8e9139c3d42 (diff) | |
download | glslang-ndk-r24-release.tar.gz |
Snap for 7956253 from 153d3c46363b5b47423e15aab803c8e9139c3d42 to ndk-r24-releasendk-r24-rc1ndk-r24-beta2ndk-r24ndk-r24-release
Change-Id: Ifd9d3a9c79131deca827d2186d3502dedb51793b
Diffstat (limited to 'gen_extension_headers.py')
-rw-r--r-- | gen_extension_headers.py | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/gen_extension_headers.py b/gen_extension_headers.py new file mode 100644 index 00000000..a787f9a9 --- /dev/null +++ b/gen_extension_headers.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python + +# Copyright (c) 2020 Google 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.
+
+import glob
+import sys
+import os
+
+def generate_main(glsl_files, output_header_file):
+ # Write commit ID to output header file
+ with open(output_header_file, "w") as header_file:
+ # Copyright Notice
+ header_string = '/***************************************************************************\n'
+ header_string += ' *\n'
+ header_string += ' * Copyright (c) 2015-2021 The Khronos Group Inc.\n'
+ header_string += ' * Copyright (c) 2015-2021 Valve Corporation\n'
+ header_string += ' * Copyright (c) 2015-2021 LunarG, Inc.\n'
+ header_string += ' * Copyright (c) 2015-2021 Google Inc.\n'
+ header_string += ' * Copyright (c) 2021 Advanced Micro Devices, Inc.All rights reserved.\n'
+ header_string += ' *\n'
+ header_string += ' ****************************************************************************/\n'
+ header_string += '#pragma once\n\n'
+ header_string += '#ifndef _INTRINSIC_EXTENSION_HEADER_H_\n'
+ header_string += '#define _INTRINSIC_EXTENSION_HEADER_H_\n\n'
+ header_file.write(header_string)
+
+ symbol_name_list = []
+
+ for i in glsl_files:
+ glsl_contents = open(i,"r").read()
+
+ filename = os.path.basename(i)
+ symbol_name = filename.split(".")[0]
+ symbol_name_list.append(symbol_name)
+ header_name = symbol_name + ".h"
+ header_str = 'std::string %s_GLSL = R"(\n%s\n)";\n' % (symbol_name, glsl_contents)
+ header_str += '\n'
+ header_file.write(header_str)
+
+ contents = ''
+ contents += '\n' + contents += 'std::string getIntrinsic(const char* const* shaders, int n) {\n' + contents += '\tstd::string shaderString = "";\n'; + + contents += '\tfor (int i = 0; i < n; i++) {\n' + + for symbol_name in symbol_name_list:
+ contents += '\t\tif (strstr(shaders[i], "%s") != NULL) {\n' % (symbol_name) + contents += '\t\t shaderString.append(%s_GLSL);\n' % (symbol_name) + contents += '\t\t}\n'
+ + contents += '\t}\n' + contents += '\treturn shaderString;\n'; + contents += '}\n'
+
+ contents += '\n#endif\n'
+ header_file.write(contents)
+
+def main():
+ if len(sys.argv) < 2: + raise Exception("Invalid number of arguments")
+
+ i = 0
+ while i < len(sys.argv): + opt = sys.argv[i] + i = i + 1 + + if opt == "-i" or opt == "-o": + if i == len(sys.argv): + raise Exception("Expected path after {}".format(opt)) + val = sys.argv[i] + i = i + 1 + if (opt == "-i"): + input_dir = val + elif (opt == "-o"): + output_file = val + else: + raise Exception("Unknown flag {}".format(opt))
+
+ glsl_files = glob.glob(input_dir + '/*.glsl')
+
+ # Generate main header
+ generate_main(glsl_files, output_file)
+
+if __name__ == '__main__':
+ main()
\ No newline at end of file |