blob: 77ceda91898e249cc90df4ca03c304b73bda7d7e [file] [log] [blame]
package {
default_applicable_licenses: ["frameworks_base_libs_hwui_license"],
}
// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
name: "frameworks_base_libs_hwui_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
"SPDX-license-identifier-BSD",
],
license_text: [
"NOTICE",
],
}
cc_defaults {
name: "hwui_defaults",
defaults: [
"hwui_static_deps",
"skia_deps",
//"hwui_bugreport_font_cache_usage",
//"hwui_compile_for_perf",
"hwui_pgo",
"hwui_lto",
],
cpp_std: "experimental",
cflags: [
"-DEGL_EGLEXT_PROTOTYPES",
"-DGL_GLEXT_PROTOTYPES",
"-DATRACE_TAG=ATRACE_TAG_VIEW",
"-DLOG_TAG=\"OpenGLRenderer\"",
"-Wall",
"-Wno-unused-parameter",
"-Wunreachable-code",
"-Werror",
"-fvisibility=hidden",
// GCC false-positives on this warning, and since we -Werror that's
// a problem
"-Wno-free-nonheap-object",
],
include_dirs: [
"external/skia/include/private",
"external/skia/src/core",
],
product_variables: {
eng: {
lto: {
never: true,
},
},
},
target: {
android: {
include_dirs: [
"external/skia/src/effects",
"external/skia/src/image",
"external/skia/src/utils",
"external/skia/src/gpu",
"external/skia/src/shaders",
],
},
host: {
include_dirs: [
"external/vulkan-headers/include",
],
cflags: [
"-Wno-unused-variable",
],
}
}
}
cc_defaults {
name: "hwui_static_deps",
shared_libs: [
"libbase",
"libharfbuzz_ng",
"libminikin",
],
static_libs: [
"libui-types",
],
target: {
android: {
shared_libs: [
"liblog",
"libcutils",
"libstatslog",
"libutils",
"libEGL",
"libGLESv1_CM",
"libGLESv2",
"libGLESv3",
"libvulkan",
"libnativedisplay",
"libnativewindow",
"libprotobuf-cpp-lite",
"libft2",
"libandroidfw",
"libcrypto",
"libsync",
"libstatspull",
"libstatssocket",
],
static_libs: [
"libEGL_blobCache",
"libprotoutil",
],
},
host: {
static_libs: [
"libandroidfw",
"libutils",
],
}
}
}
cc_defaults {
name: "hwui_bugreport_font_cache_usage",
cflags: ["-DBUGREPORT_FONT_CACHE_USAGE"],
}
cc_defaults {
name: "hwui_compile_for_perf",
// TODO: Non-arm?
cflags: [
"-fno-omit-frame-pointer",
"-marm",
"-mapcs",
],
}
// Build libhwui with PGO by default.
// Location of PGO profile data is defined in build/soong/cc/pgo.go
// and is separate from hwui.
// To turn it off, set ANDROID_PGO_NO_PROFILE_USE environment variable
// or set enable_profile_use property to false.
cc_defaults {
name: "hwui_pgo",
pgo: {
instrumentation: true,
profile_file: "hwui/hwui.profdata",
benchmarks: ["hwui"],
enable_profile_use: true,
},
}
// Build hwui library with ThinLTO by default.
cc_defaults {
name: "hwui_lto",
target: {
android: {
lto: {
thin: true,
},
},
},
}
// ------------------------
// framework-graphics jar
// ------------------------
java_sdk_library {
name: "framework-graphics",
defaults: ["framework-module-defaults"],
visibility: [
"//frameworks/base", // Framework
],
srcs: [
":framework-graphics-srcs",
],
permitted_packages: [
"android.graphics",
],
// TODO: once framework-graphics is officially part of the
// UI-rendering module this line would no longer be
// needed.
installable: true,
// Disable api_lint that the defaults enable
// TODO: enable this
api_lint: {
enabled: false,
},
// TODO: remove this
unsafe_ignore_missing_latest_api: true,
}
filegroup {
name: "framework-graphics-srcs",
srcs: [
"apex/java/**/*.java",
],
path: "apex/java"
}
// ------------------------
// APEX
// ------------------------
cc_library_headers {
name: "android_graphics_apex_headers",
host_supported: true,
export_include_dirs: [
"apex/include",
],
target: {
windows: {
enabled: true,
},
}
}
cc_defaults {
name: "android_graphics_apex",
cflags: [
"-Wno-unused-parameter",
"-Wno-non-virtual-dtor",
"-Wno-maybe-uninitialized",
"-Wno-parentheses",
"-Wall",
"-Werror",
"-Wno-error=deprecated-declarations",
"-Wunused",
"-Wunreachable-code",
],
cppflags: ["-Wno-conversion-null"],
srcs: [
"apex/android_matrix.cpp",
"apex/android_paint.cpp",
"apex/android_region.cpp",
],
header_libs: [ "android_graphics_apex_headers" ],
target: {
android: {
srcs: [ // sources that depend on android only libraries
"apex/android_bitmap.cpp",
"apex/android_canvas.cpp",
"apex/jni_runtime.cpp",
"apex/renderthread.cpp",
],
},
host: {
srcs: [
"apex/LayoutlibLoader.cpp",
],
}
},
}
// ------------------------
// Android Graphics JNI
// ------------------------
cc_library_headers {
name: "android_graphics_jni_headers",
host_supported: true,
export_include_dirs: [
"jni",
],
target: {
windows: {
enabled: true,
},
}
}
cc_defaults {
name: "android_graphics_jni",
cflags: [
"-Wno-unused-parameter",
"-Wno-non-virtual-dtor",
"-Wno-maybe-uninitialized",
"-Wno-parentheses",
"-DGL_GLEXT_PROTOTYPES",
"-DEGL_EGLEXT_PROTOTYPES",
"-DU_USING_ICU_NAMESPACE=0",
"-Wall",
"-Werror",
"-Wno-error=deprecated-declarations",
"-Wunused",
"-Wunreachable-code",
],
cppflags: ["-Wno-conversion-null"],
srcs: [
"jni/android_graphics_animation_NativeInterpolatorFactory.cpp",
"jni/android_graphics_animation_RenderNodeAnimator.cpp",
"jni/android_graphics_Canvas.cpp",
"jni/android_graphics_ColorSpace.cpp",
"jni/android_graphics_drawable_AnimatedVectorDrawable.cpp",
"jni/android_graphics_drawable_VectorDrawable.cpp",
"jni/android_graphics_HardwareRendererObserver.cpp",
"jni/android_graphics_Matrix.cpp",
"jni/android_graphics_Picture.cpp",
"jni/android_graphics_DisplayListCanvas.cpp",
"jni/android_graphics_RenderNode.cpp",
"jni/android_nio_utils.cpp",
"jni/android_util_PathParser.cpp",
"jni/Bitmap.cpp",
"jni/BitmapFactory.cpp",
"jni/ByteBufferStreamAdaptor.cpp",
"jni/Camera.cpp",
"jni/CanvasProperty.cpp",
"jni/ColorFilter.cpp",
"jni/CreateJavaOutputStreamAdaptor.cpp",
"jni/FontFamily.cpp",
"jni/FontUtils.cpp",
"jni/Graphics.cpp",
"jni/ImageDecoder.cpp",
"jni/Interpolator.cpp",
"jni/MaskFilter.cpp",
"jni/NinePatch.cpp",
"jni/NinePatchPeeker.cpp",
"jni/Paint.cpp",
"jni/PaintFilter.cpp",
"jni/Path.cpp",
"jni/PathEffect.cpp",
"jni/PathMeasure.cpp",
"jni/Picture.cpp",
"jni/Shader.cpp",
"jni/RenderEffect.cpp",
"jni/Typeface.cpp",
"jni/Utils.cpp",
"jni/YuvToJpegEncoder.cpp",
"jni/fonts/Font.cpp",
"jni/fonts/FontFamily.cpp",
"jni/text/LineBreaker.cpp",
"jni/text/MeasuredText.cpp",
"jni/text/TextShaper.cpp",
],
header_libs: [ "android_graphics_jni_headers" ],
include_dirs: [
"external/skia/include/private",
"external/skia/src/codec",
"external/skia/src/core",
"external/skia/src/effects",
"external/skia/src/image",
"external/skia/src/images",
],
shared_libs: [
"libbase",
"libcutils",
"libharfbuzz_ng",
"liblog",
"libminikin",
"libz",
"libziparchive",
"libjpeg",
],
static_libs: ["libnativehelper_lazy"],
target: {
android: {
srcs: [ // sources that depend on android only libraries
"jni/AnimatedImageDrawable.cpp",
"jni/android_graphics_TextureLayer.cpp",
"jni/android_graphics_HardwareRenderer.cpp",
"jni/BitmapRegionDecoder.cpp",
"jni/GIFMovie.cpp",
"jni/GraphicsStatsService.cpp",
"jni/Movie.cpp",
"jni/MovieImpl.cpp",
"jni/Region.cpp", // requires libbinder_ndk
"jni/pdf/PdfDocument.cpp",
"jni/pdf/PdfEditor.cpp",
"jni/pdf/PdfRenderer.cpp",
"jni/pdf/PdfUtils.cpp",
],
shared_libs: [
"libandroidfw",
"libbinder",
"libbinder_ndk",
"libmediandk",
"libnativedisplay",
"libnativewindow",
"libstatspull",
"libstatssocket",
"libpdfium",
"libbinder_ndk",
],
static_libs: [
"libgif",
"libstatslog",
],
},
host: {
cflags: [
"-Wno-unused-const-variable",
"-Wno-unused-function",
],
static_libs: [
"libandroidfw",
],
}
},
}
// ------------------------
// library
// ------------------------
cc_library_headers {
name: "libhwui_internal_headers",
host_supported: true,
export_include_dirs: [
".",
],
header_libs: [ "android_graphics_jni_headers" ],
export_header_lib_headers: [ "android_graphics_jni_headers" ],
}
cc_defaults {
name: "libhwui_defaults",
defaults: ["hwui_defaults"],
whole_static_libs: ["libskia"],
srcs: [
"canvas/CanvasFrontend.cpp",
"canvas/CanvasOpBuffer.cpp",
"canvas/CanvasOpRasterizer.cpp",
"effects/StretchEffect.cpp",
"pipeline/skia/SkiaDisplayList.cpp",
"pipeline/skia/SkiaRecordingCanvas.cpp",
"pipeline/skia/RenderNodeDrawable.cpp",
"pipeline/skia/ReorderBarrierDrawables.cpp",
"renderthread/Frame.cpp",
"renderthread/RenderTask.cpp",
"renderthread/TimeLord.cpp",
"hwui/AnimatedImageDrawable.cpp",
"hwui/Bitmap.cpp",
"hwui/BlurDrawLooper.cpp",
"hwui/Canvas.cpp",
"hwui/ImageDecoder.cpp",
"hwui/MinikinSkia.cpp",
"hwui/MinikinUtils.cpp",
"hwui/PaintImpl.cpp",
"hwui/Typeface.cpp",
"utils/Blur.cpp",
"utils/Color.cpp",
"utils/LinearAllocator.cpp",
"utils/VectorDrawableUtils.cpp",
"AnimationContext.cpp",
"Animator.cpp",
"AnimatorManager.cpp",
"CanvasTransform.cpp",
"DamageAccumulator.cpp",
"Interpolator.cpp",
"LightingInfo.cpp",
"Matrix.cpp",
"PathParser.cpp",
"Properties.cpp",
"PropertyValuesAnimatorSet.cpp",
"PropertyValuesHolder.cpp",
"RecordingCanvas.cpp",
"RenderNode.cpp",
"RenderProperties.cpp",
"RootRenderNode.cpp",
"SkiaCanvas.cpp",
"VectorDrawable.cpp",
],
proto: {
export_proto_headers: true,
},
target: {
android: {
header_libs: ["libandroid_headers_private" ],
srcs: [
"hwui/AnimatedImageThread.cpp",
"pipeline/skia/ATraceMemoryDump.cpp",
"pipeline/skia/GLFunctorDrawable.cpp",
"pipeline/skia/LayerDrawable.cpp",
"pipeline/skia/ShaderCache.cpp",
"pipeline/skia/SkiaMemoryTracer.cpp",
"pipeline/skia/SkiaOpenGLPipeline.cpp",
"pipeline/skia/SkiaPipeline.cpp",
"pipeline/skia/SkiaProfileRenderer.cpp",
"pipeline/skia/SkiaVulkanPipeline.cpp",
"pipeline/skia/VkFunctorDrawable.cpp",
"pipeline/skia/VkInteropFunctorDrawable.cpp",
"renderstate/RenderState.cpp",
"renderthread/CacheManager.cpp",
"renderthread/CanvasContext.cpp",
"renderthread/DrawFrameTask.cpp",
"renderthread/EglManager.cpp",
"renderthread/ReliableSurface.cpp",
"renderthread/VulkanManager.cpp",
"renderthread/VulkanSurface.cpp",
"renderthread/RenderProxy.cpp",
"renderthread/RenderThread.cpp",
"service/GraphicsStatsService.cpp",
"thread/CommonPool.cpp",
"utils/GLUtils.cpp",
"utils/NdkUtils.cpp",
"utils/StringUtils.cpp",
"AutoBackendTextureRelease.cpp",
"DeferredLayerUpdater.cpp",
"DeviceInfo.cpp",
"FrameInfo.cpp",
"FrameInfoVisualizer.cpp",
"HardwareBitmapUploader.cpp",
"HWUIProperties.sysprop",
"JankTracker.cpp",
"Layer.cpp",
"LayerUpdateQueue.cpp",
"ProfileData.cpp",
"ProfileDataContainer.cpp",
"Readback.cpp",
"TreeInfo.cpp",
"WebViewFunctorManager.cpp",
"protos/graphicsstats.proto",
],
// Allow implicit fallthroughs in HardwareBitmapUploader.cpp until they are fixed.
cflags: ["-Wno-implicit-fallthrough"],
},
host: {
srcs: [
"utils/HostColorSpace.cpp",
],
export_static_lib_headers: [
"libarect",
],
}
}
}
cc_library {
name: "libhwui",
host_supported: true,
defaults: [
"libhwui_defaults",
"android_graphics_apex",
"android_graphics_jni",
],
export_header_lib_headers: ["android_graphics_apex_headers"],
target: {
android: {
version_script: "libhwui.map.txt",
}
},
}
cc_library_static {
name: "libhwui_static",
defaults: [
"libhwui_defaults",
],
}
cc_defaults {
name: "hwui_test_defaults",
defaults: ["hwui_defaults"],
test_suites: ["device-tests"],
header_libs: ["libandroid_headers_private"],
target: {
android: {
shared_libs: [
"libgui",
"libui",
],
}
},
srcs: [
"tests/common/scenes/*.cpp",
"tests/common/LeakChecker.cpp",
"tests/common/TestListViewSceneBase.cpp",
"tests/common/TestContext.cpp",
"tests/common/TestScene.cpp",
"tests/common/TestUtils.cpp",
],
}
// ------------------------
// unit tests
// ------------------------
cc_test {
name: "hwui_unit_tests",
defaults: [
"hwui_test_defaults",
"android_graphics_apex",
"android_graphics_jni",
],
static_libs: [
"libgmock",
"libhwui_static",
],
shared_libs: [
"libmemunreachable",
],
srcs: [
"tests/unit/main.cpp",
"tests/unit/ABitmapTests.cpp",
"tests/unit/CacheManagerTests.cpp",
"tests/unit/CanvasContextTests.cpp",
"tests/unit/CanvasOpTests.cpp",
"tests/unit/CanvasFrontendTests.cpp",
"tests/unit/CommonPoolTests.cpp",
"tests/unit/DamageAccumulatorTests.cpp",
"tests/unit/DeferredLayerUpdaterTests.cpp",
"tests/unit/FatVectorTests.cpp",
"tests/unit/GraphicsStatsServiceTests.cpp",
"tests/unit/LayerUpdateQueueTests.cpp",
"tests/unit/LinearAllocatorTests.cpp",
"tests/unit/MatrixTests.cpp",
"tests/unit/OpBufferTests.cpp",
"tests/unit/PathInterpolatorTests.cpp",
"tests/unit/RenderNodeDrawableTests.cpp",
"tests/unit/RenderNodeTests.cpp",
"tests/unit/RenderPropertiesTests.cpp",
"tests/unit/RenderThreadTests.cpp",
"tests/unit/ShaderCacheTests.cpp",
"tests/unit/SkiaBehaviorTests.cpp",
"tests/unit/SkiaDisplayListTests.cpp",
"tests/unit/SkiaPipelineTests.cpp",
"tests/unit/SkiaRenderPropertiesTests.cpp",
"tests/unit/SkiaCanvasTests.cpp",
"tests/unit/StringUtilsTests.cpp",
"tests/unit/TestUtilsTests.cpp",
"tests/unit/ThreadBaseTests.cpp",
"tests/unit/TypefaceTests.cpp",
"tests/unit/VectorDrawableTests.cpp",
"tests/unit/WebViewFunctorManagerTests.cpp",
],
}
// ------------------------
// Macro-bench app
// ------------------------
cc_benchmark {
name: "hwuimacro",
defaults: ["hwui_test_defaults"],
static_libs: ["libhwui"],
shared_libs: [
"libmemunreachable",
],
srcs: [
"tests/macrobench/TestSceneRunner.cpp",
"tests/macrobench/main.cpp",
],
}
// ------------------------
// Micro-bench app
// ---------------------
cc_benchmark {
name: "hwuimicro",
defaults: ["hwui_test_defaults"],
static_libs: ["libhwui_static"],
shared_libs: [
"libmemunreachable",
],
srcs: [
"tests/microbench/main.cpp",
"tests/microbench/CanvasOpBench.cpp",
"tests/microbench/DisplayListCanvasBench.cpp",
"tests/microbench/LinearAllocatorBench.cpp",
"tests/microbench/PathParserBench.cpp",
"tests/microbench/RenderNodeBench.cpp",
],
}
// ----------------------------------------
// Phony target to build benchmarks for PGO
// ----------------------------------------
phony {
name: "pgo-targets-hwui",
required: [
"hwuimicro",
"hwuimacro",
]
}