| 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", |
| ] |
| } |