blob: e990c8835d20a8f544bccc85e6fcbf8d6532c21e [file] [log] [blame]
//
// 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.
//
cc_defaults {
name: "libswiftshader",
vendor: true,
host_supported: 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: [ "OpenGL" ],
target: {
android: {
relative_install_path: "egl",
header_libs: [
"swiftshader_platform_headers",
"libnativebase_headers",
],
shared_libs: [
"libnativewindow",
"libhardware",
"libcutils",
"libsync",
"liblog",
],
static_libs: [
"libarect",
],
},
host: {
header_libs: [
"swiftshader_host_headers",
"swiftshader_platform_headers",
"libnativebase_headers",
],
// Pretend to build for Android
cflags: [ "-D__ANDROID__", "-DANDROID_HOST_BUILD" ],
allow_undefined_symbols: true,
host_ldlibs: ["-ldl"],
},
},
}
cc_defaults {
name: "libswiftshader_release",
defaults: [ "libswiftshader" ],
cflags: [
"-fomit-frame-pointer",
"-ffunction-sections",
"-fdata-sections",
"-DANGLE_DISABLE_TRACE",
],
}
cc_defaults {
name: "libswiftshader_debug",
defaults: [ "libswiftshader" ],
cflags: [
"-UNDEBUG",
"-g",
"-O0",
"-DDEFAULT_THREAD_COUNT=1",
],
}
// Common libraries
cc_defaults {
name: "libswiftshader_common_defaults",
cflags: [
"-DLOG_TAG=\"swiftshader\"",
],
srcs: [
"Common/CPUID.cpp",
"Common/Configurator.cpp",
"Common/DebugAndroid.cpp",
"Common/GrallocAndroid.cpp",
"Common/Half.cpp",
"Common/Math.cpp",
"Common/Memory.cpp",
"Common/Resource.cpp",
"Common/Socket.cpp",
"Common/Thread.cpp",
"Common/Timer.cpp",
"Common/SharedLibrary.cpp",
"Main/Config.cpp",
"Main/FrameBuffer.cpp",
"Main/FrameBufferAndroid.cpp",
"Main/SwiftConfig.cpp",
"Renderer/Blitter.cpp",
"Renderer/Clipper.cpp",
"Renderer/Color.cpp",
"Renderer/Context.cpp",
"Renderer/ETC_Decoder.cpp",
"Renderer/Matrix.cpp",
"Renderer/PixelProcessor.cpp",
"Renderer/Plane.cpp",
"Renderer/Point.cpp",
"Renderer/QuadRasterizer.cpp",
"Renderer/Renderer.cpp",
"Renderer/Sampler.cpp",
"Renderer/SetupProcessor.cpp",
"Renderer/Surface.cpp",
"Renderer/TextureStage.cpp",
"Renderer/Vector.cpp",
"Renderer/VertexProcessor.cpp",
"Shader/Constants.cpp",
"Shader/PixelPipeline.cpp",
"Shader/PixelProgram.cpp",
"Shader/PixelRoutine.cpp",
"Shader/PixelShader.cpp",
"Shader/SamplerCore.cpp",
"Shader/SetupRoutine.cpp",
"Shader/Shader.cpp",
"Shader/ShaderCore.cpp",
"Shader/VertexPipeline.cpp",
"Shader/VertexProgram.cpp",
"Shader/VertexRoutine.cpp",
"Shader/VertexShader.cpp",
"OpenGL/common/Image.cpp",
"OpenGL/common/Object.cpp",
"OpenGL/common/MatrixStack.cpp",
],
target: {
host: {
exclude_srcs: [ "Common/DebugAndroid.cpp" ],
srcs: [ "Common/Debug.cpp" ],
},
},
}
cc_defaults {
name: "libswiftshader_llvm_defaults",
defaults: [ "libswiftshader_common_defaults" ],
srcs: [
"Reactor/Reactor.cpp",
"Reactor/LLVMReactor.cpp",
"Reactor/Debug.cpp",
"Reactor/CPUID.cpp",
],
cflags: [
"-Wno-unused-parameter",
"-Wno-implicit-fallthrough",
],
static_libs: [
"libLLVM7_swiftshader",
],
}
cc_defaults {
name: "libswiftshadervk_llvm_defaults",
srcs: [
"Reactor/Reactor.cpp",
"Reactor/LLVMReactor.cpp",
"Reactor/Debug.cpp",
"Reactor/CPUID.cpp",
],
cflags: [
"-Wno-unused-parameter",
"-Wno-implicit-fallthrough",
],
static_libs: [
"libLLVM7_swiftshader",
],
shared_libs: [
"libcutils",
],
}
cc_defaults {
name: "libswiftshader_common",
defaults: [ "libswiftshader_release", "libswiftshader_common_defaults" ],
}
cc_defaults {
name: "libswiftshader_common_debug",
srcs: [ "OpenGL/common/debug.cpp" ],
defaults: [ "libswiftshader_debug", "libswiftshader_common_defaults" ],
shared_libs: [
"libutils",
],
}
cc_library_static {
name: "libswiftshader_llvm",
defaults: [ "libswiftshader_common", "libswiftshader_llvm_defaults" ],
}
cc_library_static {
name: "libswiftshader_llvm_debug",
defaults: [ "libswiftshader_common_debug", "libswiftshader_llvm_defaults" ],
}
cc_library_static {
name: "libswiftshadervk_llvm",
vendor: true,
defaults: [ "libswiftshadervk_llvm_defaults" ],
}
cc_library_static {
name: "libswiftshadervk_llvm_debug",
vendor: true,
defaults: [ "libswiftshadervk_llvm_defaults" ],
}
// compiler libraries
cc_defaults {
name: "libswiftshader_compiler_defaults",
defaults: [ "libswiftshader" ],
cflags: [
"-DLOG_TAG=\"swiftshader_compiler\"",
],
srcs: [
"OpenGL/compiler/preprocessor/DiagnosticsBase.cpp",
"OpenGL/compiler/preprocessor/DirectiveHandlerBase.cpp",
"OpenGL/compiler/preprocessor/DirectiveParser.cpp",
"OpenGL/compiler/preprocessor/ExpressionParser.cpp",
"OpenGL/compiler/preprocessor/Input.cpp",
"OpenGL/compiler/preprocessor/Lexer.cpp",
"OpenGL/compiler/preprocessor/Macro.cpp",
"OpenGL/compiler/preprocessor/MacroExpander.cpp",
"OpenGL/compiler/preprocessor/Preprocessor.cpp",
"OpenGL/compiler/preprocessor/Token.cpp",
"OpenGL/compiler/preprocessor/Tokenizer.cpp",
"OpenGL/compiler/AnalyzeCallDepth.cpp",
"OpenGL/compiler/Compiler.cpp",
"OpenGL/compiler/debug.cpp",
"OpenGL/compiler/Diagnostics.cpp",
"OpenGL/compiler/DirectiveHandler.cpp",
"OpenGL/compiler/glslang_lex.cpp",
"OpenGL/compiler/glslang_tab.cpp",
"OpenGL/compiler/InfoSink.cpp",
"OpenGL/compiler/Initialize.cpp",
"OpenGL/compiler/InitializeParseContext.cpp",
"OpenGL/compiler/IntermTraverse.cpp",
"OpenGL/compiler/Intermediate.cpp",
"OpenGL/compiler/intermOut.cpp",
"OpenGL/compiler/ossource_posix.cpp",
"OpenGL/compiler/OutputASM.cpp",
"OpenGL/compiler/parseConst.cpp",
"OpenGL/compiler/ParseHelper.cpp",
"OpenGL/compiler/PoolAlloc.cpp",
"OpenGL/compiler/SymbolTable.cpp",
"OpenGL/compiler/TranslatorASM.cpp",
"OpenGL/compiler/util.cpp",
"OpenGL/compiler/ValidateLimitations.cpp",
"OpenGL/compiler/ValidateSwitch.cpp",
],
}
cc_library_static {
name: "libswiftshader_compiler",
defaults: [ "libswiftshader_release", "libswiftshader_compiler_defaults" ],
}
cc_library_static {
name: "libswiftshader_compiler_debug",
defaults: [ "libswiftshader_debug", "libswiftshader_compiler_defaults" ],
}
// libEGL libraries
cc_defaults {
name: "swiftshader_client_libraries",
defaults: [ "libswiftshader_release" ],
static_libs: [
"libswiftshader_llvm",
"libLLVM7_swiftshader",
],
}
cc_defaults {
name: "swiftshader_client_libraries_debug",
defaults: [ "libswiftshader_debug" ],
static_libs: [
"libswiftshader_llvm_debug",
"libLLVM7_swiftshader",
],
}
cc_defaults {
name: "libEGL_swiftshader_defaults",
defaults: [ "libswiftshader" ],
cflags: [
"-DLOG_TAG=\"libEGL_swiftshader\"",
"-DEGLAPI=",
"-DEGL_EGLEXT_PROTOTYPES",
"-Wno-format",
],
srcs: [
"OpenGL/libEGL/Config.cpp",
"OpenGL/libEGL/Display.cpp",
"OpenGL/libEGL/Surface.cpp",
"OpenGL/libEGL/libEGL.cpp",
"OpenGL/libEGL/main.cpp",
],
version_script: "OpenGL/libEGL/libEGL.lds",
}
cc_library_shared {
name: "libEGL_swiftshader",
defaults: [
"libEGL_swiftshader_defaults",
"swiftshader_client_libraries",
],
}
cc_library_shared {
name: "libEGL_swiftshader_debug",
defaults: [
"libEGL_swiftshader_defaults",
"swiftshader_client_libraries_debug",
],
}
// libGLESv1_CM libraries
cc_defaults {
name: "libGLESv1_CM_swiftshader_defaults",
defaults: [ "libswiftshader" ],
cflags: [
"-DLOG_TAG=\"libGLES_CM_swiftshader\"",
"-DEGLAPI=",
"-DGL_API=",
"-DGL_APICALL=",
"-DGL_GLEXT_PROTOTYPES",
"-Wno-format",
],
srcs: [
"OpenGL/libGLES_CM/Buffer.cpp",
"OpenGL/libGLES_CM/Context.cpp",
"OpenGL/libGLES_CM/Device.cpp",
"OpenGL/libGLES_CM/Framebuffer.cpp",
"OpenGL/libGLES_CM/IndexDataManager.cpp",
"OpenGL/libGLES_CM/libGLES_CM.cpp",
"OpenGL/libGLES_CM/main.cpp",
"OpenGL/libGLES_CM/Renderbuffer.cpp",
"OpenGL/libGLES_CM/ResourceManager.cpp",
"OpenGL/libGLES_CM/Texture.cpp",
"OpenGL/libGLES_CM/utilities.cpp",
"OpenGL/libGLES_CM/VertexDataManager.cpp",
],
version_script: "OpenGL/libGLES_CM/libGLES_CM.lds",
}
cc_library_shared {
name: "libGLESv1_CM_swiftshader",
defaults: [
"libGLESv1_CM_swiftshader_defaults",
"swiftshader_client_libraries",
],
}
cc_library_shared {
name: "libGLESv1_CM_swiftshader_debug",
defaults: [
"libGLESv1_CM_swiftshader_defaults",
"swiftshader_client_libraries_debug",
],
}
// libGLESv2 libraries
cc_defaults {
name: "libGLESv2_swiftshader_defaults",
defaults: [ "libswiftshader" ],
cflags: [
"-DLOG_TAG=\"libGLESv2_swiftshader\"",
"-DEGLAPI=",
"-DGL_API=",
"-DGL_APICALL=",
"-DGL_GLEXT_PROTOTYPES",
"-Wno-format",
],
srcs: [
"OpenGL/libGLESv2/Buffer.cpp",
"OpenGL/libGLESv2/Context.cpp",
"OpenGL/libGLESv2/Device.cpp",
"OpenGL/libGLESv2/Fence.cpp",
"OpenGL/libGLESv2/Framebuffer.cpp",
"OpenGL/libGLESv2/IndexDataManager.cpp",
"OpenGL/libGLESv2/libGLESv2.cpp",
"OpenGL/libGLESv2/libGLESv3.cpp",
"OpenGL/libGLESv2/main.cpp",
"OpenGL/libGLESv2/entry_points.cpp",
"OpenGL/libGLESv2/Program.cpp",
"OpenGL/libGLESv2/Query.cpp",
"OpenGL/libGLESv2/Renderbuffer.cpp",
"OpenGL/libGLESv2/ResourceManager.cpp",
"OpenGL/libGLESv2/Shader.cpp",
"OpenGL/libGLESv2/Texture.cpp",
"OpenGL/libGLESv2/TransformFeedback.cpp",
"OpenGL/libGLESv2/utilities.cpp",
"OpenGL/libGLESv2/VertexArray.cpp",
"OpenGL/libGLESv2/VertexDataManager.cpp",
],
version_script: "OpenGL/libGLESv2/libGLESv2.lds",
}
cc_library_shared {
name: "libGLESv2_swiftshader",
defaults: [
"libGLESv2_swiftshader_defaults",
"swiftshader_client_libraries",
],
static_libs: [ "libswiftshader_compiler" ],
}
cc_library_shared {
name: "libGLESv2_swiftshader_debug",
defaults: [
"libGLESv2_swiftshader_defaults",
"swiftshader_client_libraries_debug",
],
static_libs: [ "libswiftshader_compiler_debug" ],
}
// Vulkan
genrule {
name: "commit_header",
out: ["commit.h"],
tool_files: ["commit_id.py"],
cmd: "$(location commit_id.py) gen $(genDir)/commit.h",
}
cc_defaults {
name: "libvk_swiftshader_defaults",
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",
"-Wno-missing-field-initializers",
// Enable to output commit hash when SwiftShader is initialized
//"-DENABLE_BUILD_VERSION_OUTPUT",
],
cppflags: [
"-Wno-sign-promo",
"-Wno-non-virtual-dtor",
],
local_include_dirs: [ "Vulkan" ],
version_script: "Vulkan/vk_swiftshader.lds",
generated_headers: [ "commit_header" ],
target: {
android: {
relative_install_path: "hw",
header_libs: [
"swiftshader_platform_headers",
"vulkan_headers",
"hwvulkan_headers",
],
shared_libs: [
"libnativewindow",
"libhardware",
"libcutils",
"libsync",
"liblog",
],
},
},
}
cc_defaults {
name: "libvk_swiftshader_common_defaults",
cflags: [
"-DLOG_TAG=\"swiftshader\"",
],
srcs: [
"System/CPUID.cpp",
"System/Configurator.cpp",
"System/Half.cpp",
"System/Linux/MemFd.cpp",
"System/Math.cpp",
"System/Memory.cpp",
"System/Socket.cpp",
"System/Timer.cpp",
"System/DebugAndroid.cpp",
"System/GrallocAndroid.cpp",
"Device/*.cpp",
"Pipeline/*.cpp",
"Vulkan/*.cpp",
],
static_libs: [
"swiftshader_marl",
"swiftshader_spirv-tools",
],
include_dirs: [
"external/swiftshader/third_party/SPIRV-Headers/include",
"external/swiftshader/include"
],
}
cc_library_shared {
name: "vulkan.pastel",
static_libs: [
"libswiftshadervk_llvm_debug",
"libLLVM7_swiftshader",
],
defaults: [
"libvk_swiftshader_common_defaults",
"libvk_swiftshader_defaults"
],
}
cc_library_shared {
name: "vulkan.pastel.debug",
static_libs: [
"libswiftshadervk_llvm_debug",
"libLLVM7_swiftshader",
],
cflags: [
"-UNDEBUG",
"-g",
"-O0",
"-DDEFAULT_THREAD_COUNT=1",
],
defaults: [
"libvk_swiftshader_common_defaults",
"libvk_swiftshader_defaults",
],
}