Makefile re-jiggering

Change-Id: I6a8d7c9ecbc4f1af8bc4a6e1409787f215d6fc5b
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index 91e289c..b3b3479 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -2,11 +2,198 @@
 include $(CLEAR_VARS)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 
+hwui_src_files := \
+    font/CacheTexture.cpp \
+    font/Font.cpp \
+    renderstate/Blend.cpp \
+    renderstate/MeshState.cpp \
+    renderstate/PixelBufferState.cpp \
+    renderstate/RenderState.cpp \
+    renderstate/Scissor.cpp \
+    renderstate/Stencil.cpp \
+    renderstate/TextureState.cpp \
+    renderthread/CanvasContext.cpp \
+    renderthread/DrawFrameTask.cpp \
+    renderthread/EglManager.cpp \
+    renderthread/RenderProxy.cpp \
+    renderthread/RenderTask.cpp \
+    renderthread/RenderThread.cpp \
+    renderthread/TimeLord.cpp \
+    thread/TaskManager.cpp \
+    utils/Blur.cpp \
+    utils/GLUtils.cpp \
+    utils/LinearAllocator.cpp \
+    utils/NinePatchImpl.cpp \
+    AmbientShadow.cpp \
+    AnimationContext.cpp \
+    Animator.cpp \
+    AnimatorManager.cpp \
+    AssetAtlas.cpp \
+    Caches.cpp \
+    CanvasState.cpp \
+    ClipArea.cpp \
+    DamageAccumulator.cpp \
+    DeferredDisplayList.cpp \
+    DeferredLayerUpdater.cpp \
+    DisplayList.cpp \
+    DisplayListCanvas.cpp \
+    Dither.cpp \
+    Extensions.cpp \
+    FboCache.cpp \
+    FontRenderer.cpp \
+    FrameInfo.cpp \
+    FrameInfoVisualizer.cpp \
+    GammaFontRenderer.cpp \
+    GlopBuilder.cpp \
+    GradientCache.cpp \
+    Image.cpp \
+    Interpolator.cpp \
+    JankTracker.cpp \
+    Layer.cpp \
+    LayerCache.cpp \
+    LayerRenderer.cpp \
+    Matrix.cpp \
+    OpenGLRenderer.cpp \
+    Patch.cpp \
+    PatchCache.cpp \
+    PathCache.cpp \
+    PathTessellator.cpp \
+    PixelBuffer.cpp \
+    Program.cpp \
+    ProgramCache.cpp \
+    Properties.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
+
+hwui_cflags := \
+    -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES \
+    -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\" \
+    -Wall -Wno-unused-parameter -Wunreachable-code \
+    -ffast-math -O3 -Werror
+
+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
+
+hwui_c_includes += \
+    external/skia/src/core
+
+hwui_shared_libraries := \
+    liblog \
+    libcutils \
+    libutils \
+    libEGL \
+    libGLESv2 \
+    libskia \
+    libui \
+    libgui \
+
+ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT))
+    hwui_cflags += -DANDROID_ENABLE_RENDERSCRIPT
+    hwui_shared_libraries += libRS libRScpp
+    hwui_c_includes += \
+        $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,) \
+        frameworks/rs/cpp \
+        frameworks/rs
+endif
+
+
+# ------------------------
+# static library
+# ------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := libhwui_static
+LOCAL_SHARED_LIBRARIES := $(hwui_shared_libraries)
+LOCAL_CFLAGS := $(hwui_cflags)
+LOCAL_SRC_FILES := $(hwui_src_files)
+LOCAL_C_INCLUDES := $(hwui_c_includes)
+
+include $(BUILD_STATIC_LIBRARY)
+
+# ------------------------
+# shared library
+# ------------------------
+
+include $(CLEAR_VARS)
+
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 LOCAL_MODULE := libhwui
-
-include $(LOCAL_PATH)/Android.common.mk
+LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static
+LOCAL_SHARED_LIBRARIES := $(hwui_shared_libraries)
 
 include $(BUILD_SHARED_LIBRARY)
 
-include $(call all-makefiles-under,$(LOCAL_PATH))
+# ------------------------
+# unit tests
+# ------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := hwui_unit_tests
+LOCAL_MODULE_TAGS := tests
+LOCAL_SHARED_LIBRARIES := $(hwui_shared_libraries)
+LOCAL_STATIC_LIBRARIES := libhwui_static
+LOCAL_C_INCLUDES := $(hwui_c_includes)
+LOCAL_CFLAGS := $(hwui_cflags)
+
+LOCAL_SRC_FILES += \
+    unit_tests/ClipAreaTests.cpp \
+    unit_tests/DamageAccumulatorTests.cpp \
+    unit_tests/LinearAllocatorTests.cpp
+
+include $(BUILD_NATIVE_TEST)
+
+# ------------------------
+# test app
+# ------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/local/tmp
+LOCAL_MODULE:= hwuitest
+LOCAL_MODULE_TAGS := tests
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := hwuitest
+LOCAL_MODULE_STEM_64 := hwuitest64
+LOCAL_SHARED_LIBRARIES := $(hwui_shared_libraries)
+LOCAL_CFLAGS := $(hwui_cflags)
+LOCAL_C_INCLUDES := $(hwui_c_includes)
+
+HWUI_NULL_GPU := false
+
+ifeq (true, $(HWUI_NULL_GPU))
+    LOCAL_SRC_FILES := \
+        $(hwui_src_files) \
+        tests/nullegl.cpp \
+        tests/nullgles.cpp
+
+    LOCAL_CFLAGS += -DHWUI_NULL_GPU
+else
+    LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static
+endif
+
+LOCAL_SRC_FILES += \
+    tests/TestContext.cpp \
+    tests/main.cpp
+
+include $(BUILD_EXECUTABLE)