Fix Android build after SPIRV-Tools update

Bug: angleproject:4425
Change-Id: I2785b9f5c6f96b2b12eeacf64ff5316355f1ae54
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/41609
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
diff --git a/third_party/SPIRV-Headers/Android.bp b/third_party/SPIRV-Headers/Android.bp
index 96b7faa..d568b48 100644
--- a/third_party/SPIRV-Headers/Android.bp
+++ b/third_party/SPIRV-Headers/Android.bp
@@ -1,34 +1,35 @@
-filegroup {
-    name: "swiftshader_spirv.core.grammar.json-1.0",
-    srcs: ["include/spirv/1.0/spirv.core.grammar.json"],
-}
+//
+// Copyright (C) 2020 The Android Open Source Project
+//
+// 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.
+//
 
 filegroup {
-    name: "swiftshader_spirv.core.grammar.json-1.1",
-    srcs: ["include/spirv/1.1/spirv.core.grammar.json"],
-}
-
-filegroup {
-    name: "swiftshader_spirv.core.grammar.json-1.2",
-    srcs: ["include/spirv/1.2/spirv.core.grammar.json"],
-}
-
-filegroup {
-    name: "swiftshader_spirv.core.grammar.json-unified1",
+    name: "swiftshader_spirv_headers_unified1_spirv.core.grammar.json",
     srcs: ["include/spirv/unified1/spirv.core.grammar.json"],
 }
 
 filegroup {
-    name: "swiftshader_spirv.glsl.grammar.json",
-    srcs: ["include/spirv/1.2/extinst.glsl.std.450.grammar.json"],
+    name: "swiftshader_spirv_headers_unified1_extinst.opencl.std.100.grammar.json",
+    srcs: ["include/spirv/unified1/extinst.opencl.std.100.grammar.json"],
 }
 
 filegroup {
-    name: "swiftshader_spirv.opencl.grammar.json",
-    srcs: ["include/spirv/1.2/extinst.opencl.std.100.grammar.json"],
+    name: "swiftshader_spirv_headers_unified1_extinst.glsl.std.450.grammar.json",
+    srcs: ["include/spirv/unified1/extinst.glsl.std.450.grammar.json"],
 }
 
 filegroup {
-    name: "swiftshader_spirv.registry.xml",
+    name: "swiftshader_spirv_headers_spir-v.xml",
     srcs: ["include/spirv/spir-v.xml"],
 }
diff --git a/third_party/SPIRV-Tools/Android.bp b/third_party/SPIRV-Tools/Android.bp
index 64502f4..8c8ef6c 100644
--- a/third_party/SPIRV-Tools/Android.bp
+++ b/third_party/SPIRV-Tools/Android.bp
@@ -16,170 +16,84 @@
 
 // SPIRV Tools
 
-filegroup {
-    name: "swiftshader_spirv.debuginfo.grammar.json",
-    srcs: ["source/extinst.debuginfo.grammar.json"],
-}
-
-filegroup {
-    name: "swiftshader_spirv.extinst.opencl.debuginfo.100.grammar.json",
-    srcs: ["source/extinst.opencl.debuginfo.100.grammar.json"],
-}
+// genrules were obtained from the CMake build:
+// $ cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Debug
+// $ ninja -v -j 1 >log.log
+// Find Python invocations.
+// Use regex replacements to get "cmd:" lines below.
 
 genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_unified1",
+    name: "swiftshader_spvtools_generate_grammar_tables",
     out: [
         "core.insts-unified1.inc",
+        "debuginfo.insts.inc",
+        "enum_string_mapping.inc",
+        "extension_enum.inc",
         "glsl.std.450.insts.inc",
+        "opencl.debuginfo.100.insts.inc",
         "opencl.std.insts.inc",
         "operand.kinds-unified1.inc",
-    ],
-    srcs: [
-        ":swiftshader_spirv.core.grammar.json-unified1",
-        ":swiftshader_spirv.glsl.grammar.json",
-        ":swiftshader_spirv.opencl.grammar.json",
-        ":swiftshader_spirv.debuginfo.grammar.json",
-        ":swiftshader_spirv.extinst.opencl.debuginfo.100.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) "+
-         "--spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-unified1) "+
-         "--extinst-glsl-grammar=$(location :swiftshader_spirv.glsl.grammar.json) "+
-         "--extinst-opencl-grammar=$(location :swiftshader_spirv.opencl.grammar.json) "+
-         "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
-         "--extinst-cldebuginfo100-grammar=$(location :swiftshader_spirv.extinst.opencl.debuginfo.100.grammar.json) "+
-         "--core-insts-output=$(location core.insts-unified1.inc) "+
-         "--glsl-insts-output=$(location glsl.std.450.insts.inc) "+
-         "--opencl-insts-output=$(location opencl.std.insts.inc) "+
-         "--operand-kinds-output=$(location operand.kinds-unified1.inc)",
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_debuginfo",
-    out: [
-        "debuginfo.insts.inc",
-    ],
-    srcs: [
-        ":swiftshader_spirv.debuginfo.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
-         "--vendor-insts-output=$(out)"
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_opencl_debuginfo_100",
-    out: [
-        "opencl.debuginfo.100.insts.inc",
-    ],
-    srcs: [
-        ":swiftshader_spirv.extinst.opencl.debuginfo.100.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
-         "--vendor-insts-output=$(out) "+
-         "--vendor-operand-kind-prefix=CLDEBUG100_"
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_amd-gcn-shader",
-    out: [
         "spv-amd-gcn-shader.insts.inc",
-    ],
-    srcs: [
-        "source/extinst.spv-amd-gcn-shader.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
-         "--vendor-insts-output=$(out)"
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_amd-shader-ballot",
-    out: [
         "spv-amd-shader-ballot.insts.inc",
-    ],
-    srcs: [
-        "source/extinst.spv-amd-shader-ballot.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
-         "--vendor-insts-output=$(out)"
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_amd-shader-explicit-vertex-parameter",
-    out: [
         "spv-amd-shader-explicit-vertex-parameter.insts.inc",
-    ],
-    srcs: [
-        "source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
-         "--vendor-insts-output=$(out)"
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_grammar_tables_amd-shader-trinary-minmax",
-    out: [
         "spv-amd-shader-trinary-minmax.insts.inc",
     ],
     srcs: [
+        ":swiftshader_spirv_headers_unified1_extinst.glsl.std.450.grammar.json",
+        ":swiftshader_spirv_headers_unified1_extinst.opencl.std.100.grammar.json",
+        ":swiftshader_spirv_headers_unified1_spirv.core.grammar.json",
+        "source/extinst.debuginfo.grammar.json",
+        "source/extinst.opencl.debuginfo.100.grammar.json",
+        "source/extinst.spv-amd-gcn-shader.grammar.json",
+        "source/extinst.spv-amd-shader-ballot.grammar.json",
+        "source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json",
         "source/extinst.spv-amd-shader-trinary-minmax.grammar.json",
     ],
     tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
-         "--vendor-insts-output=$(out)"
+    cmd:
+        "$(location) --extinst-vendor-grammar=$(location source/extinst.spv-amd-gcn-shader.grammar.json) --vendor-insts-output=$(location spv-amd-gcn-shader.insts.inc) --vendor-operand-kind-prefix=; "+
+        "$(location) --spirv-core-grammar=$(location :swiftshader_spirv_headers_unified1_spirv.core.grammar.json) --extinst-debuginfo-grammar=$(location source/extinst.debuginfo.grammar.json) --extinst-cldebuginfo100-grammar=$(location source/extinst.opencl.debuginfo.100.grammar.json) --core-insts-output=$(location core.insts-unified1.inc) --operand-kinds-output=$(location operand.kinds-unified1.inc); "+
+        "$(location) --extinst-vendor-grammar=$(location source/extinst.debuginfo.grammar.json) --vendor-insts-output=$(location debuginfo.insts.inc) --vendor-operand-kind-prefix=; "+
+        "$(location) --extinst-vendor-grammar=$(location source/extinst.spv-amd-shader-ballot.grammar.json) --vendor-insts-output=$(location spv-amd-shader-ballot.insts.inc) --vendor-operand-kind-prefix=; "+
+        "$(location) --extinst-vendor-grammar=$(location source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json) --vendor-insts-output=$(location spv-amd-shader-explicit-vertex-parameter.insts.inc) --vendor-operand-kind-prefix=; "+
+        "$(location) --extinst-vendor-grammar=$(location source/extinst.spv-amd-shader-trinary-minmax.grammar.json) --vendor-insts-output=$(location spv-amd-shader-trinary-minmax.insts.inc) --vendor-operand-kind-prefix=; "+
+        "$(location) --extinst-vendor-grammar=$(location source/extinst.opencl.debuginfo.100.grammar.json) --vendor-insts-output=$(location opencl.debuginfo.100.insts.inc) --vendor-operand-kind-prefix=CLDEBUG100_; "+
+        "$(location) --spirv-core-grammar=$(location :swiftshader_spirv_headers_unified1_spirv.core.grammar.json) --extinst-debuginfo-grammar=$(location source/extinst.debuginfo.grammar.json) --extinst-cldebuginfo100-grammar=$(location source/extinst.opencl.debuginfo.100.grammar.json) --extension-enum-output=$(location extension_enum.inc) --enum-string-mapping-output=$(location enum_string_mapping.inc); "+
+        "$(location) --extinst-opencl-grammar=$(location :swiftshader_spirv_headers_unified1_extinst.opencl.std.100.grammar.json) --opencl-insts-output=$(location opencl.std.insts.inc); "+
+        "$(location) --extinst-glsl-grammar=$(location :swiftshader_spirv_headers_unified1_extinst.glsl.std.450.grammar.json) --glsl-insts-output=$(location glsl.std.450.insts.inc); "
 }
 
+
 genrule {
-    name: "swiftshader_gen_spvtools_lang_headers",
+    name: "swiftshader_spvtools_generate_language_headers",
     out: [
         "DebugInfo.h",
+        "OpenCLDebugInfo100.h",
     ],
     srcs: [
-        ":swiftshader_spirv.debuginfo.grammar.json",
+        "source/extinst.debuginfo.grammar.json",
+        "source/extinst.opencl.debuginfo.100.grammar.json",
     ],
     tool_files: ["utils/generate_language_headers.py"],
-    cmd: "$(location) --extinst-name=DebugInfo "+
-         "--extinst-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
-         "--extinst-output-base=$$(dirname $(location DebugInfo.h))/DebugInfo",
+    cmd: 
+        "$(location) --extinst-name=DebugInfo --extinst-grammar=$(location source/extinst.debuginfo.grammar.json) --extinst-output-base=$$(dirname $(location DebugInfo.h))/DebugInfo; "+
+        "$(location) --extinst-name=OpenCLDebugInfo100 --extinst-grammar=$(location source/extinst.opencl.debuginfo.100.grammar.json) --extinst-output-base=$$(dirname $(location OpenCLDebugInfo100.h))/OpenCLDebugInfo100; "
 }
 
 genrule {
-    name: "swiftshader_gen_spvtools_enum_string_mapping",
-    out: [
-        "extension_enum.inc",
-        "enum_string_mapping.inc",
-    ],
-    srcs: [
-        ":swiftshader_spirv.core.grammar.json-unified1",
-        ":swiftshader_spirv.debuginfo.grammar.json",
-        ":swiftshader_spirv.extinst.opencl.debuginfo.100.grammar.json",
-    ],
-    tool_files: ["utils/generate_grammar_tables.py"],
-    cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-unified1) "+
-         "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
-         "--extinst-cldebuginfo100-grammar=$(location :swiftshader_spirv.extinst.opencl.debuginfo.100.grammar.json) "+
-         "--extension-enum-output=$(location extension_enum.inc) "+
-         "--enum-string-mapping-output=$(location enum_string_mapping.inc) "
-}
-
-genrule {
-    name: "swiftshader_gen_spvtools_generators_inc",
+    name: "swiftshader_spvtools_generate_registry_tables",
     out: [
         "generators.inc"
     ],
     srcs: [
-        ":swiftshader_spirv.registry.xml"
+        ":swiftshader_spirv_headers_spir-v.xml"
     ],
     tool_files: ["utils/generate_registry_tables.py"],
-    cmd: "$(location) --xml=$(location :swiftshader_spirv.registry.xml) --generator-output=$(location generators.inc)",
+    cmd: "$(location) --xml=$(location :swiftshader_spirv_headers_spir-v.xml) --generator-output=$(location generators.inc)",
 }
 
 genrule { // FIXME this relies on `git` which is no good on build machines
-    name: "swiftshader_gen_spvtools_build_version_inc",
+    name: "swiftshader_spvtools_update_build_version",
     out: ["build-version.inc"],
     srcs: ["CHANGES"],
     tool_files: ["utils/update_build_version.py"],
@@ -206,17 +120,10 @@
         "external/swiftshader/third_party/SPIRV-Headers/include"
     ],
     generated_headers: [
-        "swiftshader_gen_spvtools_grammar_tables_unified1",
-        "swiftshader_gen_spvtools_grammar_tables_debuginfo",
-        "swiftshader_gen_spvtools_grammar_tables_opencl_debuginfo_100",
-        "swiftshader_gen_spvtools_grammar_tables_amd-gcn-shader",
-        "swiftshader_gen_spvtools_grammar_tables_amd-shader-ballot",
-        "swiftshader_gen_spvtools_grammar_tables_amd-shader-explicit-vertex-parameter",
-        "swiftshader_gen_spvtools_grammar_tables_amd-shader-trinary-minmax",
-        "swiftshader_gen_spvtools_enum_string_mapping",
-        "swiftshader_gen_spvtools_generators_inc",
-        "swiftshader_gen_spvtools_build_version_inc",
-        "swiftshader_gen_spvtools_lang_headers",
+        "swiftshader_spvtools_generate_grammar_tables",
+        "swiftshader_spvtools_generate_language_headers",
+        "swiftshader_spvtools_update_build_version",
+        "swiftshader_spvtools_generate_registry_tables",
     ],
     stl: "libc++_static",
     cppflags: [