Add SPIRV-Tools to the Vulkan build.

Bug b/123642959

Change-Id: I8edc9ac199b2d212b9e563dcc31f9f46757ed596
Reviewed-on: https://swiftshader-review.googlesource.com/c/24351
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 01a785d..1bc49df 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2205,7 +2205,7 @@
         PREFIX ""
     )
     set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
-    target_link_libraries(libvk_swiftshader ${Reactor} ${OS_LIBS})
+    target_link_libraries(libvk_swiftshader ${Reactor} ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
     add_custom_command(
         TARGET libvk_swiftshader
         POST_BUILD
diff --git a/SwiftShader.sln b/SwiftShader.sln
index 8c5b30d..b52fc5a 100644
--- a/SwiftShader.sln
+++ b/SwiftShader.sln
@@ -257,11 +257,39 @@
 	EndProjectSection

 EndProject

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Vulkan", "src\Vulkan\vulkan.vcxproj", "{E1C34B66-C942-4B9A-B8C3-9A12625650D3}"

+	ProjectSection(ProjectDependencies) = postProject

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3} = {00BC7103-607E-30AB-AC01-9BCCB4B497D3}

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7} = {CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}

+	EndProjectSection

 EndProject

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactorUnitTests", "src\Reactor\ReactorUnitTests.vcxproj", "{4EC107AB-89E8-4A0B-8366-B3E81085AE07}"

 EndProject

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VulkanUnitTests", "tests\VulkanUnitTests\VulkanUnitTests.vcxproj", "{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}"

 EndProject

+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SPIRV-Tools", "SPIRV-Tools", "{ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\SPIRV-Tools.vcxproj", "{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPIRV-Tools-opt", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\opt\SPIRV-Tools-opt.vcxproj", "{00BC7103-607E-30AB-AC01-9BCCB4B497D3}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_tables", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\core_tables.vcxproj", "{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enum_string_mapping", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\enum_string_mapping.vcxproj", "{34CB4705-0332-3134-BE31-AE71FCF9B26C}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extinst_tables", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\extinst_tables.vcxproj", "{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-header-DebugInfo", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-header-DebugInfo.vcxproj", "{F2CF5409-EC66-380C-9D99-E7DE526F5065}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-debuginfo", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-debuginfo.vcxproj", "{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-gcn-shader", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-gcn-shader.vcxproj", "{776D987A-006A-39B1-BBAB-620E77F07525}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-ballot", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-ballot.vcxproj", "{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-explicit-vertex-parameter", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj", "{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spirv-tools-spv-amd-shader-trinary-minmax", "build\Visual Studio 15 2017 Win64\third_party\SPIRV-Tools\source\spirv-tools-spv-amd-shader-trinary-minmax.vcxproj", "{972385EE-2A79-349F-997A-09272FBAB677}"

+EndProject

 Global

 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

 		Debug|Win32 = Debug|Win32

@@ -792,6 +820,116 @@
 		{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|Win32.ActiveCfg = Release|x64

 		{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|x64.ActiveCfg = Release|x64

 		{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE}.Release|x64.Build.0 = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Debug|Win32.ActiveCfg = Debug|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Debug|x64.ActiveCfg = Debug|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Debug|x64.Build.0 = Debug|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|Win32.ActiveCfg = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|Win32.Build.0 = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|x64.ActiveCfg = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Profile|x64.Build.0 = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Release|Win32.ActiveCfg = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Release|x64.ActiveCfg = Release|x64

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7}.Release|x64.Build.0 = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Debug|Win32.ActiveCfg = Debug|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Debug|x64.ActiveCfg = Debug|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Debug|x64.Build.0 = Debug|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|Win32.ActiveCfg = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|Win32.Build.0 = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|x64.ActiveCfg = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Profile|x64.Build.0 = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Release|Win32.ActiveCfg = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Release|x64.ActiveCfg = Release|x64

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3}.Release|x64.Build.0 = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Debug|Win32.ActiveCfg = Debug|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Debug|x64.ActiveCfg = Debug|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Debug|x64.Build.0 = Debug|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|Win32.ActiveCfg = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|Win32.Build.0 = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|x64.ActiveCfg = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Profile|x64.Build.0 = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Release|Win32.ActiveCfg = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Release|x64.ActiveCfg = Release|x64

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D}.Release|x64.Build.0 = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Debug|Win32.ActiveCfg = Debug|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Debug|x64.ActiveCfg = Debug|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Debug|x64.Build.0 = Debug|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|Win32.ActiveCfg = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|Win32.Build.0 = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|x64.ActiveCfg = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Profile|x64.Build.0 = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Release|Win32.ActiveCfg = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Release|x64.ActiveCfg = Release|x64

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C}.Release|x64.Build.0 = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Debug|Win32.ActiveCfg = Debug|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Debug|x64.ActiveCfg = Debug|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Debug|x64.Build.0 = Debug|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|Win32.ActiveCfg = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|Win32.Build.0 = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|x64.ActiveCfg = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Profile|x64.Build.0 = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Release|Win32.ActiveCfg = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Release|x64.ActiveCfg = Release|x64

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956}.Release|x64.Build.0 = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Debug|Win32.ActiveCfg = Debug|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Debug|x64.ActiveCfg = Debug|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Debug|x64.Build.0 = Debug|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|Win32.ActiveCfg = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|Win32.Build.0 = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|x64.ActiveCfg = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Profile|x64.Build.0 = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Release|Win32.ActiveCfg = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Release|x64.ActiveCfg = Release|x64

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065}.Release|x64.Build.0 = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Debug|Win32.ActiveCfg = Debug|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Debug|x64.ActiveCfg = Debug|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Debug|x64.Build.0 = Debug|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|Win32.ActiveCfg = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|Win32.Build.0 = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|x64.ActiveCfg = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Profile|x64.Build.0 = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Release|Win32.ActiveCfg = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Release|x64.ActiveCfg = Release|x64

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B}.Release|x64.Build.0 = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Debug|Win32.ActiveCfg = Debug|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Debug|x64.ActiveCfg = Debug|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Debug|x64.Build.0 = Debug|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Profile|Win32.ActiveCfg = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Profile|Win32.Build.0 = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Profile|x64.ActiveCfg = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Profile|x64.Build.0 = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Release|Win32.ActiveCfg = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Release|x64.ActiveCfg = Release|x64

+		{776D987A-006A-39B1-BBAB-620E77F07525}.Release|x64.Build.0 = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Debug|Win32.ActiveCfg = Debug|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Debug|x64.ActiveCfg = Debug|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Debug|x64.Build.0 = Debug|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|Win32.ActiveCfg = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|Win32.Build.0 = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|x64.ActiveCfg = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Profile|x64.Build.0 = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Release|Win32.ActiveCfg = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Release|x64.ActiveCfg = Release|x64

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B}.Release|x64.Build.0 = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Debug|Win32.ActiveCfg = Debug|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Debug|x64.ActiveCfg = Debug|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Debug|x64.Build.0 = Debug|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|Win32.ActiveCfg = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|Win32.Build.0 = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|x64.ActiveCfg = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Profile|x64.Build.0 = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Release|Win32.ActiveCfg = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Release|x64.ActiveCfg = Release|x64

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5}.Release|x64.Build.0 = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Debug|Win32.ActiveCfg = Debug|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Debug|x64.ActiveCfg = Debug|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Debug|x64.Build.0 = Debug|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Profile|Win32.ActiveCfg = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Profile|Win32.Build.0 = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Profile|x64.ActiveCfg = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Profile|x64.Build.0 = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Release|Win32.ActiveCfg = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Release|x64.ActiveCfg = Release|x64

+		{972385EE-2A79-349F-997A-09272FBAB677}.Release|x64.Build.0 = Release|x64

 	EndGlobalSection

 	GlobalSection(SolutionProperties) = preSolution

 		HideSolutionNode = FALSE

@@ -835,6 +973,17 @@
 		{FBDCFF88-0CE1-43C3-B694-8F45946FAFE3} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

 		{4EC107AB-89E8-4A0B-8366-B3E81085AE07} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

 		{16E1EBC1-BB6B-4A82-A1A3-5A69AC8D58FE} = {ED25C308-5BDB-43A7-BED6-C2C059FC2D7D}

+		{CD8B25C1-16C1-34A6-AE4D-74AFD52AD3D7} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{00BC7103-607E-30AB-AC01-9BCCB4B497D3} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{DB78E20D-8BD9-3338-A2FF-8E3C6D51AB2D} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{34CB4705-0332-3134-BE31-AE71FCF9B26C} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{4827C1A9-38A6-34C2-BCE6-9BD67E09F956} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{F2CF5409-EC66-380C-9D99-E7DE526F5065} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{84E3CD8C-59CE-3E6B-9B56-E8FB57F2A59B} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{776D987A-006A-39B1-BBAB-620E77F07525} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{C9FB4A9C-F1A4-3D1C-843C-7EB226B6014B} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{4F3EC7EE-847C-3F60-8E0A-F646459BC5F5} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

+		{972385EE-2A79-349F-997A-09272FBAB677} = {ABF69E39-C15E-4DAC-A27E-3480DE2C0CF0}

 	EndGlobalSection

 	GlobalSection(ExtensibilityGlobals) = postSolution

 		SolutionGuid = {4DF423D2-8425-48A7-9CEC-835C4C3CA957}