Compilation files for Android
Bug: b/122837488
Change-Id: I45fce8c0b6ef9f6a42f1d3745d7a0434dd08832e
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28231
Tested-by: Chris Forbes <chrisforbes@google.com>
Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/Android.bp b/Android.bp
index b81c37c..be71dcc 100644
--- a/Android.bp
+++ b/Android.bp
@@ -101,6 +101,13 @@
export_include_dirs: ["include/Android"],
}
+cc_library_headers {
+ name: "swiftshadervk_platform_headers",
+ vendor: true,
+ device_supported: true,
+ export_include_dirs: ["include"],
+}
+
subdirs = [
"src",
"third_party/llvm-subzero",
diff --git a/src/Android.bp b/src/Android.bp
index 368087b..f1d5e6f 100644
--- a/src/Android.bp
+++ b/src/Android.bp
@@ -533,3 +533,166 @@
static_libs: [ "libswiftshader_compiler_debug" ],
}
+
+
+
+// Vulkan
+
+cc_defaults {
+ name: "libvk_swiftshader",
+
+ device_supported: true,
+ host_supported: true,
+ vendor: true,
+
+ defaults: [ "swiftshader_common" ],
+
+ cflags: [
+ "-D_GNU_SOURCE",
+ "-D__STDC_LIMIT_MACROS",
+ "-D__STDC_CONSTANT_MACROS",
+ "-D__STDC_FORMAT_MACROS",
+ "-DHAVE_GRALLOC1",
+ "-DNO_SANITIZE_FUNCTION=",
+ // FIXME: Use <android/api-level.h> instead?
+ "-DANDROID_PLATFORM_SDK_VERSION=10000",
+ "-Wno-implicit-fallthrough",
+ "-Wno-unused-parameter",
+ "-Wno-unused-local-typedef",
+ ],
+
+ cppflags: [
+ "-Wno-sign-promo",
+ "-Wno-non-virtual-dtor",
+ ],
+
+ local_include_dirs: [ "Vulkan" ],
+
+ target: {
+ android: {
+ relative_install_path: "hw",
+ header_libs: [
+ "swiftshadervk_platform_headers",
+ ],
+ shared_libs: [
+ "libnativewindow",
+ "libhardware",
+ "libcutils",
+ "libsync",
+ "liblog",
+ ],
+ },
+ android_arm64: {
+ enabled: false,
+ }
+ },
+}
+
+cc_defaults {
+ name: "libvk_swiftshader_common_defaults",
+
+ cflags: [
+ "-DLOG_TAG=\"swiftshader\"",
+ ],
+
+ srcs: [
+ "Common/CPUID.cpp",
+ "Common/Configurator.cpp",
+ "Common/Half.cpp",
+ "Common/Math.cpp",
+ "Common/Memory.cpp",
+ "Common/Resource.cpp",
+ "Common/Socket.cpp",
+ "Common/Thread.cpp",
+ "Common/Timer.cpp",
+ "Device/Blitter.cpp",
+ "Device/Clipper.cpp",
+ "Device/Color.cpp",
+ "Device/Config.cpp",
+ "Device/Context.cpp",
+ "Device/ETC_Decoder.cpp",
+ "Device/Matrix.cpp",
+ "Device/PixelProcessor.cpp",
+ "Device/Plane.cpp",
+ "Device/Point.cpp",
+ "Device/QuadRasterizer.cpp",
+ "Device/Renderer.cpp",
+ "Device/Sampler.cpp",
+ "Device/SetupProcessor.cpp",
+ "Device/SwiftConfig.cpp",
+ "Device/Vector.cpp",
+ "Device/VertexProcessor.cpp",
+ "Pipeline/ComputeProgram.cpp",
+ "Pipeline/Constants.cpp",
+ "Pipeline/PixelProgram.cpp",
+ "Pipeline/PixelRoutine.cpp",
+ "Pipeline/SamplerCore.cpp",
+ "Pipeline/SetupRoutine.cpp",
+ "Pipeline/ShaderCore.cpp",
+ "Pipeline/SpirvShader.cpp",
+ "Pipeline/SpirvShader_dbg.cpp",
+ "Pipeline/VertexProgram.cpp",
+ "Pipeline/VertexRoutine.cpp",
+ ],
+
+ include_dirs: [
+ "external/swiftshader/third_party/SPIRV-Headers/include",
+ "external/swiftshader/include"
+ ],
+}
+
+cc_defaults {
+ name: "libvk_swiftshader_debug_default",
+
+ defaults: [ "libvk_swiftshader" ],
+
+ cflags: [
+ "-UNDEBUG",
+ "-g",
+ "-O0",
+ "-DDEFAULT_THREAD_COUNT=1",
+ ],
+}
+
+cc_defaults {
+ name: "swiftshadervk_client_libraries_subzero_or_llvm_debug",
+
+ defaults: [ "libvk_swiftshader_debug_default" ],
+
+ target: {
+ android_arm: {
+ static_libs: [
+ "libswiftshader_subzero_debug",
+ "libsubzero",
+ "libLLVMSupport_subzero",
+ ],
+ },
+
+ android: {
+ static_libs: [
+ "libswiftshader_llvm_debug",
+ "libLLVM_swiftshader",
+ ],
+ },
+
+ host: {
+ static_libs: [
+ "libswiftshader_llvm_debug",
+ "libLLVM_swiftshader",
+ ],
+ },
+ },
+}
+
+cc_library_shared {
+ name: "libvk_swiftshader_debug",
+
+ device_supported: true,
+
+
+ defaults: [
+ "swiftshadervk_client_libraries_subzero_or_llvm_debug",
+ "libvk_swiftshader_common_defaults",
+ "libvk_swiftshader"
+ ],
+}
\ No newline at end of file
diff --git a/third_party/SPIRV-Headers/Android.bp b/third_party/SPIRV-Headers/Android.bp
new file mode 100644
index 0000000..96b7faa
--- /dev/null
+++ b/third_party/SPIRV-Headers/Android.bp
@@ -0,0 +1,34 @@
+filegroup {
+ name: "swiftshader_spirv.core.grammar.json-1.0",
+ srcs: ["include/spirv/1.0/spirv.core.grammar.json"],
+}
+
+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",
+ 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"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.opencl.grammar.json",
+ srcs: ["include/spirv/1.2/extinst.opencl.std.100.grammar.json"],
+}
+
+filegroup {
+ name: "swiftshader_spirv.registry.xml",
+ srcs: ["include/spirv/spir-v.xml"],
+}
diff --git a/third_party/SPIRV-Tools/Android.bp b/third_party/SPIRV-Tools/Android.bp
new file mode 100644
index 0000000..2231425
--- /dev/null
+++ b/third_party/SPIRV-Tools/Android.bp
@@ -0,0 +1,254 @@
+//
+// Copyright (C) 2018 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.
+//
+
+// SPIRV Tools
+
+filegroup {
+ name: "swiftshader_spirv.debuginfo.grammar.json",
+ srcs: ["source/extinst.debuginfo.grammar.json"],
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_1.0",
+ out: [
+ "core.insts-1.0.inc",
+ "operand.kinds-1.0.inc",
+ "glsl.std.450.insts.inc",
+ "opencl.std.insts.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-1.0",
+ ":swiftshader_spirv.glsl.grammar.json",
+ ":swiftshader_spirv.opencl.grammar.json",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-1.0) "+
+ "--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) "+
+ "--core-insts-output=$(location core.insts-1.0.inc) "+
+ "--glsl-insts-output=$(location glsl.std.450.insts.inc) "+
+ "--opencl-insts-output=$(location opencl.std.insts.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-1.0.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_1.1",
+ out: [
+ "core.insts-1.1.inc",
+ "operand.kinds-1.1.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-1.1",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-1.1) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--core-insts-output=$(location core.insts-1.1.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-1.1.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_1.2",
+ out: [
+ "core.insts-1.2.inc",
+ "operand.kinds-1.2.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-1.2",
+ ":swiftshader_spirv.debuginfo.grammar.json",
+ ],
+ tool_files: ["utils/generate_grammar_tables.py"],
+ cmd: "$(location) --spirv-core-grammar=$(location :swiftshader_spirv.core.grammar.json-1.2) "+
+ "--extinst-debuginfo-grammar=$(location :swiftshader_spirv.debuginfo.grammar.json) "+
+ "--core-insts-output=$(location core.insts-1.2.inc) "+
+ "--operand-kinds-output=$(location operand.kinds-1.2.inc)",
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_grammar_tables_unified1",
+ out: [
+ "core.insts-unified1.inc",
+ "operand.kinds-unified1.inc",
+ ],
+ srcs: [
+ ":swiftshader_spirv.core.grammar.json-unified1",
+ ":swiftshader_spirv.debuginfo.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) "+
+ "--core-insts-output=$(location core.insts-unified1.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_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: [
+ "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)"
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_lang_headers",
+ out: [
+ "DebugInfo.h",
+ ],
+ srcs: [
+ ":swiftshader_spirv.debuginfo.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",
+}
+
+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",
+ ],
+ 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) "+
+ "--extension-enum-output=$(location extension_enum.inc) "+
+ "--enum-string-mapping-output=$(location enum_string_mapping.inc) "
+}
+
+genrule {
+ name: "swiftshader_gen_spvtools_generators_inc",
+ out: [
+ "generators.inc"
+ ],
+ srcs: [
+ ":swiftshader_spirv.registry.xml"
+ ],
+ tool_files: ["utils/generate_registry_tables.py"],
+ cmd: "$(location) --xml=$(location :swiftshader_spirv.registry.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",
+ out: ["build-version.inc"],
+ srcs: ["CHANGES"],
+ tool_files: ["utils/update_build_version.py"],
+ cmd: "$(location) $$(dirname $(location CHANGES)) " +
+ "$(location build-version.inc)",
+}
+
+cc_library {
+ name: "swiftshader_spirv-tools",
+ sdk_version: "27",
+ srcs: [
+ "source/*.cpp",
+ "source/util/*.cpp",
+ "source/val/*.cpp",
+ "source/opt/*.cpp",
+ ],
+ local_include_dirs: [
+ "source",
+ ],
+ export_include_dirs: [
+ "include",
+ ],
+ include_dirs: [
+ "external/swiftshader/third_party/SPIRV-Headers/include"
+ ],
+ generated_headers: [
+ "swiftshader_gen_spvtools_grammar_tables_1.0",
+ "swiftshader_gen_spvtools_grammar_tables_1.1",
+ "swiftshader_gen_spvtools_grammar_tables_1.2",
+ "swiftshader_gen_spvtools_grammar_tables_unified1",
+ "swiftshader_gen_spvtools_grammar_tables_debuginfo",
+ "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",
+ ],
+ stl: "libc++_static",
+ cppflags: [
+ "-Wno-implicit-fallthrough"
+ ],
+}