Split Android.mk into several Android.mk

Split a HUGE Android.mk into:

helper/Android.mk
runtime/Android.mk
lib/CodeGen/Android.mk
lib/Disassembler/Android.mk
lib/ExecutionEngine/Android.mk

Change-Id: I060c31b897387e2a892b2ec769e2c5a62738d6f0
diff --git a/Android.mk b/Android.mk
index d981bcb..2a5b41b 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,157 +14,63 @@
 # limitations under the License.
 #
 
-local_cflags_for_libbcc := -Wall -Wno-unused-parameter -Werror
-ifneq ($(TARGET_BUILD_VARIANT),eng)
-local_cflags_for_libbcc += -D__DISABLE_ASSERTS
-endif
-
 LOCAL_PATH := $(call my-dir)
+include $(LOCAL_PATH)/libbcc-config.mk
 
-LLVM_ROOT_PATH := external/llvm
 
-RSLOADER_ROOT_PATH := frameworks/compile/linkloader
-
-# Extract Configuration from Config.h
-
-libbcc_GET_CONFIG = $(shell cat "$(LOCAL_PATH)/Config.h" | \
-                            grep "^\#define $1 [01]$$" | \
-                            cut -d ' ' -f 3)
-
-libbcc_USE_OLD_JIT := $(call libbcc_GET_CONFIG,USE_OLD_JIT)
-libbcc_USE_MCJIT := $(call libbcc_GET_CONFIG,USE_MCJIT)
-libbcc_USE_CACHE := $(call libbcc_GET_CONFIG,USE_CACHE)
-libbcc_USE_DISASSEMBLER := $(call libbcc_GET_CONFIG,USE_DISASSEMBLER)
-libbcc_USE_LIBBCC_SHA1SUM := $(call libbcc_GET_CONFIG,USE_LIBBCC_SHA1SUM)
-
-# Source Files
-
-libbcc_SRC_FILES := \
-  lib/ExecutionEngine/bcc.cpp \
-  lib/ExecutionEngine/Compiler.cpp \
-  lib/ExecutionEngine/ContextManager.cpp \
-  lib/ExecutionEngine/FileHandle.cpp \
-  lib/ExecutionEngine/Runtime.c \
-  lib/ExecutionEngine/RuntimeStub.c \
-  lib/ExecutionEngine/Script.cpp \
-  lib/ExecutionEngine/ScriptCompiled.cpp \
-  lib/ExecutionEngine/SourceInfo.cpp \
-  lib/Disassembler/Disassembler.cpp
+#=====================================================================
+# Whole Static Library to Be Linked In
+#=====================================================================
 
 ifeq ($(libbcc_USE_OLD_JIT),1)
-libbcc_SRC_FILES += \
-  lib/CodeGen/CodeEmitter.cpp \
-  lib/CodeGen/CodeMemoryManager.cpp
+libbcc_WHOLE_STATIC_LIBRARIES += libbccCodeGen
 endif
 
-ifeq ($(libbcc_USE_CACHE),1)
-libbcc_SRC_FILES += \
-  lib/ExecutionEngine/CacheReader.cpp \
-  lib/ExecutionEngine/CacheWriter.cpp \
-  lib/ExecutionEngine/ScriptCached.cpp \
-  lib/ExecutionEngine/Sha1Helper.cpp \
-  lib/ExecutionEngine/MCCacheWriter.cpp \
-  lib/ExecutionEngine/MCCacheReader.cpp \
-  helper/sha1.c
+ifeq ($(libbcc_USE_DISASSEMBLER),1)
+libbcc_WHOLE_STATIC_LIBRARIES += libbccDisassembler
 endif
 
-# Include File Search Path
-libbcc_C_INCLUDES := \
-  $(RSLOADER_ROOT_PATH)/android \
-  $(LOCAL_PATH)/lib \
-  $(LOCAL_PATH)/helper \
-  $(LOCAL_PATH)/include \
-  $(LOCAL_PATH)
+libbcc_WHOLE_STATIC_LIBRARIES += \
+  libbccExecutionEngine \
+  libbccHelper
 
+
+#=====================================================================
 # Calculate SHA1 checksum for libbcc.so and libRS.so
-# ========================================================
+#=====================================================================
+
 include $(CLEAR_VARS)
+
 LOCAL_MODULE := libbcc.so.sha1
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 
 include $(BUILD_SYSTEM)/base_rules.mk
-libbcc_SHA1_SRCS := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libbcc.so \
-    $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRS.so
+libbcc_SHA1_SRCS := \
+  $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libbcc.so \
+  $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRS.so
 
 libbcc_GEN_SHA1_STAMP := $(LOCAL_PATH)/tools/gen-sha1-stamp.py
 
 $(LOCAL_BUILT_MODULE): PRIVATE_SHA1_SRCS := $(libbcc_SHA1_SRCS)
 $(LOCAL_BUILT_MODULE): $(libbcc_SHA1_SRCS) $(libbcc_GEN_SHA1_STAMP)
 	$(hide) mkdir -p $(dir $@) && \
-          $(libbcc_GEN_SHA1_STAMP) $@ $(PRIVATE_SHA1_SRCS)
+	        $(libbcc_GEN_SHA1_STAMP) $@ $(PRIVATE_SHA1_SRCS)
 
-#
-# Shared library for target
-# ========================================================
+
+#=====================================================================
+# Device Shared Library libbcc
+#=====================================================================
+
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := libbcc
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_CFLAGS += $(local_cflags_for_libbcc)
-LOCAL_SRC_FILES := \
-  $(libbcc_SRC_FILES)
 
-LOCAL_CFLAGS += -DTARGET_BUILD
-
-ifeq ($(TARGET_ARCH),arm)
-  LOCAL_SRC_FILES += \
-    runtime/lib/arm/adddf3vfp.S \
-    runtime/lib/arm/addsf3vfp.S \
-    runtime/lib/arm/divdf3vfp.S \
-    runtime/lib/arm/divsf3vfp.S \
-    runtime/lib/arm/eqdf2vfp.S \
-    runtime/lib/arm/eqsf2vfp.S \
-    runtime/lib/arm/extendsfdf2vfp.S \
-    runtime/lib/arm/fixdfsivfp.S \
-    runtime/lib/arm/fixsfsivfp.S \
-    runtime/lib/arm/fixunsdfsivfp.S \
-    runtime/lib/arm/fixunssfsivfp.S \
-    runtime/lib/arm/floatsidfvfp.S \
-    runtime/lib/arm/floatsisfvfp.S \
-    runtime/lib/arm/floatunssidfvfp.S \
-    runtime/lib/arm/floatunssisfvfp.S \
-    runtime/lib/arm/gedf2vfp.S \
-    runtime/lib/arm/gesf2vfp.S \
-    runtime/lib/arm/gtdf2vfp.S \
-    runtime/lib/arm/gtsf2vfp.S \
-    runtime/lib/arm/ledf2vfp.S \
-    runtime/lib/arm/lesf2vfp.S \
-    runtime/lib/arm/ltdf2vfp.S \
-    runtime/lib/arm/ltsf2vfp.S \
-    runtime/lib/arm/muldf3vfp.S \
-    runtime/lib/arm/mulsf3vfp.S \
-    runtime/lib/arm/nedf2vfp.S \
-    runtime/lib/arm/negdf2vfp.S \
-    runtime/lib/arm/negsf2vfp.S \
-    runtime/lib/arm/nesf2vfp.S \
-    runtime/lib/arm/subdf3vfp.S \
-    runtime/lib/arm/subsf3vfp.S \
-    runtime/lib/arm/truncdfsf2vfp.S \
-    runtime/lib/arm/unorddf2vfp.S \
-    runtime/lib/arm/unordsf2vfp.S
-else
-  ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
-    LOCAL_SRC_FILES += \
-      runtime/lib/i386/ashldi3.S \
-      runtime/lib/i386/ashrdi3.S \
-      runtime/lib/i386/divdi3.S \
-      runtime/lib/i386/floatdidf.S \
-      runtime/lib/i386/floatdisf.S \
-      runtime/lib/i386/floatdixf.S \
-      runtime/lib/i386/floatundidf.S \
-      runtime/lib/i386/floatundisf.S \
-      runtime/lib/i386/floatundixf.S \
-      runtime/lib/i386/lshrdi3.S \
-      runtime/lib/i386/moddi3.S \
-      runtime/lib/i386/muldi3.S \
-      runtime/lib/i386/udivdi3.S \
-      runtime/lib/i386/umoddi3.S
-  else
-    $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
-  endif
-endif
+LOCAL_WHOLE_STATIC_LIBRARIES += \
+  $(libbcc_WHOLE_STATIC_LIBRARIES) \
+  libbccCompilerRT
 
 ifeq ($(libbcc_USE_MCJIT),1)
   LOCAL_STATIC_LIBRARIES += librsloader
@@ -222,8 +128,6 @@
 
 LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
 
-LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
-
 # Modules that need get installed if and only if the target libbcc.so is installed.
 LOCAL_REQUIRED_MODULES := libclcore.bc libbcc.so.sha1
 
@@ -236,18 +140,18 @@
 include $(LLVM_ROOT_PATH)/llvm-device-build.mk
 include $(BUILD_SHARED_LIBRARY)
 
-# Shared library for host
-# ========================================================
+
+#=====================================================================
+# Host Shared Library libbcc
+#=====================================================================
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := libbcc
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 LOCAL_IS_HOST_MODULE := true
-LOCAL_CFLAGS += $(local_cflags_for_libbcc)
-LOCAL_SRC_FILES := \
-  $(libbcc_SRC_FILES) \
-  helper/DebugHelper.c
+
+LOCAL_WHOLE_STATIC_LIBRARIES += $(libbcc_WHOLE_STATIC_LIBRARIES)
 
 ifeq ($(libbcc_USE_MCJIT),1)
   LOCAL_STATIC_LIBRARIES += librsloader
@@ -290,8 +194,6 @@
 
 LOCAL_LDLIBS := -ldl -lpthread
 
-LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
-
 # definitions for LLVM
 LOCAL_CFLAGS += -DDEBUG_CODEGEN=1
 
@@ -308,6 +210,8 @@
 include $(LLVM_ROOT_PATH)/llvm-host-build.mk
 include $(BUILD_HOST_SHARED_LIBRARY)
 
-# Build children
-# ========================================================
+
+#=====================================================================
+# Include Subdirectories
+#=====================================================================
 include $(call all-makefiles-under,$(LOCAL_PATH))