LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk BUGREPORT_FONT_CACHE_USAGE := false # Enables fine-grained GLES error checking # If set to true, every GLES call is wrapped & error checked # Has moderate overhead HWUI_ENABLE_OPENGL_VALIDATION := true hwui_src_files := \ hwui/Bitmap.cpp \ font/CacheTexture.cpp \ font/Font.cpp \ hwui/Canvas.cpp \ hwui/MinikinSkia.cpp \ hwui/MinikinUtils.cpp \ hwui/PaintImpl.cpp \ hwui/Typeface.cpp \ pipeline/skia/GLFunctorDrawable.cpp \ pipeline/skia/LayerDrawable.cpp \ pipeline/skia/RenderNodeDrawable.cpp \ pipeline/skia/ReorderBarrierDrawables.cpp \ pipeline/skia/SkiaDisplayList.cpp \ pipeline/skia/SkiaOpenGLPipeline.cpp \ pipeline/skia/SkiaOpenGLReadback.cpp \ pipeline/skia/SkiaPipeline.cpp \ pipeline/skia/SkiaProfileRenderer.cpp \ pipeline/skia/SkiaRecordingCanvas.cpp \ pipeline/skia/SkiaVulkanPipeline.cpp \ renderstate/Blend.cpp \ renderstate/MeshState.cpp \ renderstate/OffscreenBufferPool.cpp \ renderstate/PixelBufferState.cpp \ renderstate/RenderState.cpp \ renderstate/Scissor.cpp \ renderstate/Stencil.cpp \ renderstate/TextureState.cpp \ renderthread/CanvasContext.cpp \ renderthread/OpenGLPipeline.cpp \ renderthread/DrawFrameTask.cpp \ renderthread/EglManager.cpp \ renderthread/VulkanManager.cpp \ renderthread/RenderProxy.cpp \ renderthread/RenderTask.cpp \ renderthread/RenderThread.cpp \ renderthread/TimeLord.cpp \ renderthread/Frame.cpp \ service/GraphicsStatsService.cpp \ thread/TaskManager.cpp \ utils/Blur.cpp \ utils/Color.cpp \ utils/GLUtils.cpp \ utils/LinearAllocator.cpp \ utils/StringUtils.cpp \ utils/TestWindowContext.cpp \ utils/VectorDrawableUtils.cpp \ AmbientShadow.cpp \ AnimationContext.cpp \ Animator.cpp \ AnimatorManager.cpp \ BakedOpDispatcher.cpp \ BakedOpRenderer.cpp \ BakedOpState.cpp \ Caches.cpp \ CanvasState.cpp \ ClipArea.cpp \ DamageAccumulator.cpp \ DeferredLayerUpdater.cpp \ DeviceInfo.cpp \ DisplayList.cpp \ Extensions.cpp \ FboCache.cpp \ FontRenderer.cpp \ FrameBuilder.cpp \ FrameInfo.cpp \ FrameInfoVisualizer.cpp \ GammaFontRenderer.cpp \ GlLayer.cpp \ GlopBuilder.cpp \ GpuMemoryTracker.cpp \ GradientCache.cpp \ Image.cpp \ Interpolator.cpp \ JankTracker.cpp \ Layer.cpp \ LayerBuilder.cpp \ LayerUpdateQueue.cpp \ Matrix.cpp \ OpDumper.cpp \ OpenGLReadback.cpp \ Patch.cpp \ PatchCache.cpp \ PathCache.cpp \ PathParser.cpp \ PathTessellator.cpp \ PixelBuffer.cpp \ ProfileRenderer.cpp \ Program.cpp \ ProgramCache.cpp \ Properties.cpp \ PropertyValuesAnimatorSet.cpp \ PropertyValuesHolder.cpp \ RecordingCanvas.cpp \ RenderBufferCache.cpp \ RenderNode.cpp \ RenderProperties.cpp \ ResourceCache.cpp \ ShadowTessellator.cpp \ SkiaCanvas.cpp \ SkiaCanvasProxy.cpp \ SkiaShader.cpp \ Snapshot.cpp \ SpotShadow.cpp \ TessellationCache.cpp \ TextDropShadowCache.cpp \ Texture.cpp \ TextureCache.cpp \ VectorDrawable.cpp \ VkLayer.cpp \ protos/hwui.proto hwui_test_common_src_files := \ $(call all-cpp-files-under, tests/common/scenes) \ tests/common/LeakChecker.cpp \ tests/common/TestListViewSceneBase.cpp \ tests/common/TestContext.cpp \ tests/common/TestScene.cpp \ tests/common/TestUtils.cpp hwui_debug_common_src_files := \ debug/wrap_gles.cpp \ debug/DefaultGlesDriver.cpp \ debug/GlesErrorCheckWrapper.cpp \ debug/GlesDriver.cpp \ debug/FatalBaseDriver.cpp \ debug/NullGlesDriver.cpp hwui_cflags := \ -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES \ -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\" \ -Wall -Wno-unused-parameter -Wunreachable-code -Werror ifeq ($(TARGET_USES_HWC2),true) hwui_cflags += -DUSE_HWC2 endif # TODO: Linear blending should be enabled by default, but we are # TODO: making it an opt-in while it's a work in progress # TODO: The final test should be: # TODO: ifneq ($(TARGET_ENABLE_LINEAR_BLENDING),false) ifeq ($(TARGET_ENABLE_LINEAR_BLENDING),true) hwui_cflags += -DANDROID_ENABLE_LINEAR_BLENDING endif # GCC false-positives on this warning, and since we -Werror that's # a problem hwui_cflags += -Wno-free-nonheap-object # clang's warning is broken, see: https://llvm.org/bugs/show_bug.cgi?id=21629 hwui_cflags += -Wno-missing-braces ifeq (true, $(BUGREPORT_FONT_CACHE_USAGE)) hwui_src_files += \ font/FontCacheHistoryTracker.cpp hwui_cflags += -DBUGREPORT_FONT_CACHE_USAGE endif ifndef HWUI_COMPILE_SYMBOLS hwui_cflags += -fvisibility=hidden endif ifdef HWUI_COMPILE_FOR_PERF # TODO: Non-arm? hwui_cflags += -fno-omit-frame-pointer -marm -mapcs endif # This has to be lazy-resolved because it depends on the LOCAL_MODULE_CLASS # which varies depending on what is being built define hwui_proto_include $(call local-generated-sources-dir)/proto/$(LOCAL_PATH) endef hwui_c_includes += \ external/skia/include/private \ external/skia/src/core \ external/skia/src/effects \ external/skia/src/image \ external/skia/src/utils \ external/icu/icu4c/source/common \ external/harfbuzz_ng/src \ external/freetype/include # enable RENDERSCRIPT hwui_c_includes += \ $(call intermediates-dir-for,STATIC_LIBRARIES,TARGET,) \ frameworks/rs/cpp \ frameworks/rs # ------------------------ # static library # ------------------------ include $(CLEAR_VARS) LOCAL_MODULE_CLASS := STATIC_LIBRARIES LOCAL_MODULE := libhwui_static LOCAL_CFLAGS := $(hwui_cflags) LOCAL_SRC_FILES := $(hwui_src_files) ifeq (true, $(HWUI_ENABLE_OPENGL_VALIDATION)) LOCAL_CFLAGS += -include debug/wrap_gles.h LOCAL_CFLAGS += -DDEBUG_OPENGL=3 LOCAL_SRC_FILES += $(hwui_debug_common_src_files) endif LOCAL_C_INCLUDES := $(hwui_c_includes) $(call hwui_proto_include) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH) \ $(call hwui_proto_include) include $(LOCAL_PATH)/hwui_static_deps.mk include $(BUILD_STATIC_LIBRARY) # ------------------------ # static library null gpu # ------------------------ include $(CLEAR_VARS) LOCAL_MODULE_CLASS := STATIC_LIBRARIES LOCAL_MODULE := libhwui_static_debug LOCAL_CFLAGS := \ $(hwui_cflags) \ -include debug/wrap_gles.h \ -DHWUI_NULL_GPU LOCAL_SRC_FILES := \ $(hwui_src_files) \ $(hwui_debug_common_src_files) \ debug/nullegl.cpp LOCAL_C_INCLUDES := $(hwui_c_includes) $(call hwui_proto_include) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH) \ $(call hwui_proto_include) include $(LOCAL_PATH)/hwui_static_deps.mk include $(BUILD_STATIC_LIBRARY) # ------------------------ # shared library # ------------------------ include $(CLEAR_VARS) LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_MODULE := libhwui LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) include $(LOCAL_PATH)/hwui_static_deps.mk include $(BUILD_SHARED_LIBRARY) # ------------------------ # unit tests # ------------------------ include $(CLEAR_VARS) LOCAL_MODULE := hwui_unit_tests LOCAL_MODULE_TAGS := tests LOCAL_STATIC_LIBRARIES := libgmock libhwui_static_debug LOCAL_SHARED_LIBRARIES := libmemunreachable LOCAL_CFLAGS := \ $(hwui_cflags) \ -include debug/wrap_gles.h \ -DHWUI_NULL_GPU LOCAL_C_INCLUDES := $(hwui_c_includes) LOCAL_SRC_FILES += \ $(hwui_test_common_src_files) \ tests/unit/main.cpp \ tests/unit/BakedOpDispatcherTests.cpp \ tests/unit/BakedOpRendererTests.cpp \ tests/unit/BakedOpStateTests.cpp \ tests/unit/BitmapTests.cpp \ tests/unit/CanvasContextTests.cpp \ tests/unit/CanvasStateTests.cpp \ tests/unit/ClipAreaTests.cpp \ tests/unit/DamageAccumulatorTests.cpp \ tests/unit/DeferredLayerUpdaterTests.cpp \ tests/unit/DeviceInfoTests.cpp \ tests/unit/FatVectorTests.cpp \ tests/unit/FontRendererTests.cpp \ tests/unit/FrameBuilderTests.cpp \ tests/unit/GlopBuilderTests.cpp \ tests/unit/GpuMemoryTrackerTests.cpp \ tests/unit/GradientCacheTests.cpp \ tests/unit/GraphicsStatsServiceTests.cpp \ tests/unit/LayerUpdateQueueTests.cpp \ tests/unit/LeakCheckTests.cpp \ tests/unit/LinearAllocatorTests.cpp \ tests/unit/MatrixTests.cpp \ tests/unit/MeshStateTests.cpp \ tests/unit/OffscreenBufferPoolTests.cpp \ tests/unit/OpDumperTests.cpp \ tests/unit/PathInterpolatorTests.cpp \ tests/unit/RenderNodeDrawableTests.cpp \ tests/unit/RecordingCanvasTests.cpp \ tests/unit/RenderNodeTests.cpp \ tests/unit/RenderPropertiesTests.cpp \ tests/unit/SkiaBehaviorTests.cpp \ tests/unit/SkiaDisplayListTests.cpp \ tests/unit/SkiaPipelineTests.cpp \ tests/unit/SkiaRenderPropertiesTests.cpp \ tests/unit/SkiaCanvasTests.cpp \ tests/unit/SnapshotTests.cpp \ tests/unit/StringUtilsTests.cpp \ tests/unit/TestUtilsTests.cpp \ tests/unit/TextDropShadowCacheTests.cpp \ tests/unit/TextureCacheTests.cpp \ tests/unit/VectorDrawableTests.cpp \ include $(LOCAL_PATH)/hwui_static_deps.mk include $(BUILD_NATIVE_TEST) # ------------------------ # Macro-bench app # ------------------------ include $(CLEAR_VARS) LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/local/tmp LOCAL_MODULE:= hwuimacro LOCAL_MODULE_TAGS := tests LOCAL_MULTILIB := both LOCAL_CFLAGS := $(hwui_cflags) LOCAL_C_INCLUDES := $(hwui_c_includes) # set to libhwui_static_debug to skip actual GL commands LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static LOCAL_SHARED_LIBRARIES := libmemunreachable LOCAL_SRC_FILES += \ $(hwui_test_common_src_files) \ tests/macrobench/TestSceneRunner.cpp \ tests/macrobench/main.cpp include $(LOCAL_PATH)/hwui_static_deps.mk include $(BUILD_NATIVE_BENCHMARK) # ------------------------ # Micro-bench app # --------------------- include $(CLEAR_VARS) LOCAL_MODULE:= hwuimicro LOCAL_MODULE_TAGS := tests LOCAL_CFLAGS := \ $(hwui_cflags) \ -include debug/wrap_gles.h \ -DHWUI_NULL_GPU LOCAL_C_INCLUDES := $(hwui_c_includes) LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static_debug LOCAL_SHARED_LIBRARIES := libmemunreachable LOCAL_SRC_FILES += \ $(hwui_test_common_src_files) \ tests/microbench/main.cpp \ tests/microbench/DisplayListCanvasBench.cpp \ tests/microbench/FontBench.cpp \ tests/microbench/FrameBuilderBench.cpp \ tests/microbench/LinearAllocatorBench.cpp \ tests/microbench/PathParserBench.cpp \ tests/microbench/RenderNodeBench.cpp \ tests/microbench/ShadowBench.cpp \ tests/microbench/TaskManagerBench.cpp include $(LOCAL_PATH)/hwui_static_deps.mk include $(BUILD_NATIVE_BENCHMARK)