Fix for 2nd arch build

 in order to comply with valgrind tools naming convention
 current schema builds one platform/tool at the time
 changing names accordingly

Change-Id: I47ab668f6441dbb2dec99be53d428aed04a84c06
diff --git a/main/Android.build_all.mk b/main/Android.build_all.mk
new file mode 100644
index 0000000..1f17490
--- /dev/null
+++ b/main/Android.build_all.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+vg_local_arch_cflags := $(target_arch_cflags)
+vg_local_2nd_arch_cflags := $(target_2nd_arch_cflags)
+vg_build_second_arch := false
+include $(LOCAL_PATH)/Android.build_one.mk
+
+# build second arch
+ifneq ($(TARGET_2ND_ARCH),)
+  vg_build_second_arch := true
+  include $(LOCAL_PATH)/Android.build_one.mk
+endif
+
+# clean vg_locals
+include $(LOCAL_PATH)/Android.clean.mk
+
diff --git a/main/Android.build_one.mk b/main/Android.build_one.mk
new file mode 100644
index 0000000..3aac25c
--- /dev/null
+++ b/main/Android.build_one.mk
@@ -0,0 +1,65 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+include $(CLEAR_VARS)
+
+ifeq ($(vg_build_second_arch),true)
+LOCAL_MULTILIB := 32
+LOCAL_ARM_MODE := arm
+vg_local_arch := $(TARGET_2ND_ARCH)
+else
+LOCAL_MULTILIB := first
+LOCAL_ARM_MODE := arm64
+vg_local_arch  := $(TARGET_ARCH)
+endif
+
+LOCAL_MODULE := $(vg_local_module)-$(vg_local_arch)-linux
+
+LOCAL_SRC_FILES := $(vg_local_src_files)
+
+LOCAL_C_INCLUDES := $(common_includes) $(vg_local_c_includes)
+
+LOCAL_CFLAGS := $(vg_local_cflags)
+LOCAL_CFLAGS_$(TARGET_ARCH) := $(vg_local_arch_cflags)
+LOCAL_CFLAGS_$(TARGET_2ND_ARCH) := $(vg_local_2nd_arch_cflags)
+
+LOCAL_ASFLAGS := $(common_cflags)
+LOCAL_ASFLAGS_$(TARGET_ARCH) := $(vg_local_arch_cflags)
+LOCAL_ASFLAGS_$(TARGET_2ND_ARCH) := $(vg_local_2nd_arch_cflags)
+
+
+LOCAL_LDFLAGS := $(vg_local_ldflags)
+
+LOCAL_MODULE_RELATIVE_PATH:=$(vg_local_module_relative_path)
+LOCAL_MODULE_CLASS := $(vg_local_module_class)
+
+LOCAL_STATIC_LIBRARIES := \
+    $(foreach l,$(vg_local_static_libraries),$l-$(vg_local_arch)-linux)
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+    $(foreach l,$(vg_local_whole_static_libraries),$l-$(vg_local_arch)-linux)
+
+ifeq ($(vg_local_target),EXECUTABLE)
+  LOCAL_FORCE_STATIC_EXECUTABLE := true
+endif
+
+ifeq ($(vg_local_without_system_shared_libraries),true)
+  LOCAL_SYSTEM_SHARED_LIBRARIES :=
+endif
+
+ifeq ($(vg_local_no_crt),true)
+  LOCAL_NO_CRT := true
+endif
+
+include $(BUILD_$(vg_local_target))
+
diff --git a/main/Android.clean.mk b/main/Android.clean.mk
new file mode 100644
index 0000000..911008d
--- /dev/null
+++ b/main/Android.clean.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+vg_local_module :=
+vg_local_module_relative_path :=
+vg_local_target :=
+vg_local_module_class :=
+vg_local_src_files :=
+vg_local_ldflags :=
+vg_local_static_libraries :=
+vg_local_whole_static_libraries :=
+vg_local_without_system_shared_libraries :=
+vg_local_no_crt :=
+vg_local_cflags :=
+vg_local_arch_cflags :=
+vg_local_c_includes :=
diff --git a/main/Android.mk b/main/Android.mk
index 591fb34..350d334 100644
--- a/main/Android.mk
+++ b/main/Android.mk
@@ -32,21 +32,22 @@
 	-DVG_PLATFORM=\"$(TARGET_ARCH)-linux\"
 
 ifeq ($(TARGET_IS_64_BIT),true)
-target_arch_cflags += \
-	-DVG_LIBDIR=\"/system/lib64/valgrind\"
+  vg_libdir=\"/system/lib64/valgrind\"
 else
-target_arch_cflags += \
-	-DVG_LIBDIR=\"/system/lib/valgrind\"
-
+  vg_libdir=\"/system/lib/valgrind\"
 endif
 
+target_arch_cflags+=-DVG_LIBDIR=$(vg_libdir)
+
 ifdef TARGET_2ND_ARCH
 target_2nd_arch_cflags := \
 	-DVGA_$(TARGET_2ND_ARCH)=1 \
 	-DVGP_$(TARGET_2ND_ARCH)_linux=1 \
 	-DVGPV_$(TARGET_2ND_ARCH)_linux_android=1 \
-	-DVG_LIBDIR=\"/system/lib/valgrind\" \
+    -DVG_LIBDIR=$(vg_libdir) \
 	-DVG_PLATFORM=\"$(TARGET_2ND_ARCH)-linux\"
+vg_second_arch := $(TARGET_2ND_ARCH)
+
 endif
 
 common_includes := \
@@ -57,7 +58,7 @@
 
 vex_ldflags := -nodefaultlibs
 
-ifeq ($(TARGET_ARCH),arm)
+ifeq (,$(filter $(TARGET_ARCH),arm arm64))
 tool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
 
 # ioctl/syscall wrappers are device dependent
@@ -82,13 +83,15 @@
 endif
 
 # Build libvex-($TARGET_ARCH)-linux.a
-include $(CLEAR_VARS)
+vg_local_module=libvex
 
-LOCAL_MODULE := libvex-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_ARM_MODE := arm
+vg_local_cflags := $(common_cflags) \
+    -Wbad-function-cast \
+    -Wcast-qual \
+    -Wcast-align \
+    -fstrict-aliasing
 
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	VEX/priv/main_globals.c \
 	VEX/priv/main_main.c \
 	VEX/priv/main_util.c \
@@ -134,28 +137,14 @@
 	VEX/priv/host_s390_isel.c \
 	VEX/priv/s390_disasm.c
 
-
-LOCAL_C_INCLUDES := $(common_includes)
-
-LOCAL_CFLAGS := $(common_cflags) \
-	-Wbad-function-cast \
-	-Wcast-qual \
-	-Wcast-align \
-	-fstrict-aliasing
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-include $(BUILD_STATIC_LIBRARY)
+vg_local_target := STATIC_LIBRARY
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build libcoregrind-$(TARGET_ARCH)-linux.a
-include $(CLEAR_VARS)
+vg_local_module := libcoregrind
+vg_local_target := STATIC_LIBRARY
 
-LOCAL_MODULE := libcoregrind-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_ARM_MODE := arm
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	coregrind/m_cache.c \
 	coregrind/m_commandline.c \
 	coregrind/m_clientstate.c \
@@ -292,81 +281,50 @@
 	coregrind/m_gdbserver/valgrind-low-x86.c \
 	coregrind/m_gdbserver/version.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(vex_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_LDFLAGS := $(vex_ldflags)
-
-# TODO: split asflags out from cflags.
-LOCAL_CFLAGS := $(common_cflags)
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_ASFLAGS := $(common_cflags)
-LOCAL_ASFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_ASFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-include $(BUILD_STATIC_LIBRARY)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux.a
-include $(CLEAR_VARS)
+vg_local_module := libreplacemalloc_toolpreload
+vg_local_target := STATIC_LIBRARY
 
-LOCAL_MODULE := libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_ARM_MODE := arm
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	coregrind/m_replacemalloc/vg_replace_malloc.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(preload_ldflags)
 
-LOCAL_LDFLAGS := $(preload_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-include $(BUILD_STATIC_LIBRARY)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build vgpreload_core-$(TARGET_ARCH)-linux.so
-include $(CLEAR_VARS)
+vg_local_module := vgpreload_core
+vg_local_module_relative_path := valgrind
+vg_local_target := SHARED_LIBRARY
+vg_local_module_class := SHARED_LIBRARIES
 
-LOCAL_MODULE := vgpreload_core-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_STRIP_MODULE := false
-LOCAL_NO_CRT := true
-LOCAL_PRELINK_MODULE := false
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	coregrind/vg_preloaded.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+#LOCAL_STRIP_MODULE := false
+#vg_local_no_crt := true
+#LOCAL_PRELINK_MODULE := false
 
-LOCAL_LDFLAGS := $(preload_ldflags)
+vg_local_ldflags := $(preload_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_CFLAGS := $(common_cflags)
+vg_local_arch_cflags := $(target_arch_cflags)
 
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-include $(BUILD_SHARED_LIBRARY)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build memcheck-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := memcheck-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-
-LOCAL_SRC_FILES := \
+vg_local_module := memcheck
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_src_files := \
 	memcheck/mc_leakcheck.c \
 	memcheck/mc_malloc_wrappers.c \
 	memcheck/mc_main.c \
@@ -374,89 +332,67 @@
 	memcheck/mc_machine.c \
 	memcheck/mc_errors.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_cflags := $(common_cflags)
+vg_local_ldflags := $(tool_ldflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_LDFLAGS := $(tool_ldflags)
+vg_local_without_system_shared_libraries := true
+vg_local_no_crt := true
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build vgpreload_memcheck-$(TARGET_ARCH)-linux.so
-include $(CLEAR_VARS)
+vg_local_module := vgpreload_memcheck
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := SHARED_LIBRARY
 
-LOCAL_MODULE := vgpreload_memcheck-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_STRIP_MODULE := false
-LOCAL_NO_CRT := true
-LOCAL_PRELINK_MODULE := false
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	memcheck/mc_replace_strmem.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(preload_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_LDFLAGS := $(preload_ldflags)
+vg_local_whole_static_libraries := libreplacemalloc_toolpreload
 
-LOCAL_CFLAGS := $(common_cflags)
+include $(LOCAL_PATH)/Android.build_all.mk
 
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
+#LOCAL_STRIP_MODULE := false
+#vg_local_no_crt := true
+#LOCAL_PRELINK_MODULE := false
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux
-
-include $(BUILD_SHARED_LIBRARY)
 
 # Build cachegrind-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
+vg_local_module := cachegrind
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
+vg_local_no_crt := true
+vg_local_without_system_shared_libraries := true
 
-LOCAL_MODULE := cachegrind-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	cachegrind/cg_arch.c \
 	cachegrind/cg_main.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(tool_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_LDFLAGS := $(tool_ldflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_CFLAGS := $(common_cflags)
+include $(LOCAL_PATH)/Android.build_all.mk
 
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
 
 # Build callgrind-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
 
-LOCAL_MODULE := callgrind-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
+vg_local_module := callgrind
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
+vg_local_no_crt := true
+vg_local_without_system_shared_libraries := true
 
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	callgrind/bb.c \
 	callgrind/bbcc.c \
 	callgrind/callstack.c \
@@ -472,94 +408,67 @@
 	callgrind/sim.c \
 	callgrind/threads.c
 
-LOCAL_C_INCLUDES := $(common_includes) \
-	external/valgrind/main/cachegrind
+vg_local_c_includes := external/valgrind/main/cachegrind
+vg_local_ldflags := $(tool_ldflags)
+vg_local_cflags := $(common_cflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_LDFLAGS := $(tool_ldflags)
+include $(LOCAL_PATH)/Android.build_all.mk
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
 
 # Build helgrind-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
+vg_local_module := helgrind
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
+vg_local_no_crt := true
+vg_local_without_system_shared_libraries := true
+vg_local_src_files := \
+    helgrind/hg_basics.c \
+    helgrind/hg_errors.c \
+    helgrind/hg_lock_n_thread.c \
+    helgrind/hg_main.c \
+    helgrind/hg_wordset.c \
+    helgrind/libhb_core.c
 
-LOCAL_MODULE := helgrind-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
+vg_local_ldflags := $(tool_ldflags)
+vg_local_cflags := $(common_cflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_SRC_FILES := \
-	helgrind/hg_basics.c \
-	helgrind/hg_errors.c \
-	helgrind/hg_lock_n_thread.c \
-	helgrind/hg_main.c \
-	helgrind/hg_wordset.c \
-	helgrind/libhb_core.c
+include $(LOCAL_PATH)/Android.build_all.mk
 
-LOCAL_C_INCLUDES := $(common_includes)
-
-LOCAL_LDFLAGS := $(tool_ldflags)
-
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
 
 # Build vgpreload_helgrind-$(TARGET_ARCH)-linux.so
-include $(CLEAR_VARS)
+vg_local_module := vgpreload_helgrind
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := SHARED_LIBRARY
+#LOCAL_STRIP_MODULE := false
+vg_local_no_crt := true
+#LOCAL_PRELINK_MODULE := false
 
-LOCAL_MODULE := vgpreload_helgrind-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_STRIP_MODULE := false
-LOCAL_NO_CRT := true
-LOCAL_PRELINK_MODULE := false
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	helgrind/hg_intercepts.c
 
-LOCAL_C_INCLUDES := $(common_includes)
 
-LOCAL_LDFLAGS := $(preload_ldflags)
+vg_local_ldflags := $(preload_ldflags)
+vg_local_cflags := $(common_cflags)
+vg_local_whole_static_libraries := libreplacemalloc_toolpreload
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_WHOLE_STATIC_LIBRARIES := libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux
-
-include $(BUILD_SHARED_LIBRARY)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build drd-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
+vg_local_module := drd
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
+vg_local_no_crt := true
+vg_local_without_system_shared_libraries := true
 
-LOCAL_MODULE := drd-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	drd/drd_barrier.c \
 	drd/drd_clientobj.c \
 	drd/drd_clientreq.c \
@@ -575,153 +484,107 @@
 	drd/drd_semaphore.c \
 	drd/drd_suppression.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(tool_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_LDFLAGS := $(tool_ldflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build vgpreload_drd-$(TARGET_ARCH)-linux.so
-include $(CLEAR_VARS)
+vg_local_module := vgpreload_drd
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := SHARED_LIBRARY
+#LOCAL_STRIP_MODULE := false
+vg_local_no_crt := true
+#LOCAL_PRELINK_MODULE := false
 
-LOCAL_MODULE := vgpreload_drd-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_STRIP_MODULE := false
-LOCAL_NO_CRT := true
-LOCAL_PRELINK_MODULE := false
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	drd/drd_pthread_intercepts.c \
 	drd/drd_qtcore_intercepts.c \
 	drd/drd_strmem_intercepts.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(preload_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_LDFLAGS := $(preload_ldflags)
+vg_local_whole_static_libraries := libreplacemalloc_toolpreload
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_WHOLE_STATIC_LIBRARIES := libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux
-
-include $(BUILD_SHARED_LIBRARY)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build massif-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
+vg_local_module := massif
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
+vg_local_no_crt := true
+vg_local_without_system_shared_libraries := true
 
-LOCAL_MODULE := massif-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
-
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	massif/ms_main.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(tool_ldflags)
+vg_local_cflags := $(common_cflags)
 
-LOCAL_LDFLAGS := $(tool_ldflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build vgpreload_massif-$(TARGET_ARCH)-linux.so
-include $(CLEAR_VARS)
+vg_local_module := vgpreload_massif
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := SHARED_LIBRARY
+#LOCAL_STRIP_MODULE := false
+vg_local_no_crt := true
 
-LOCAL_MODULE := vgpreload_massif-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_STRIP_MODULE := false
-LOCAL_NO_CRT := true
-LOCAL_PRELINK_MODULE := false
+#LOCAL_PRELINK_MODULE := false
 
-LOCAL_SRC_FILES :=
+vg_local_src_files :=
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(preload_ldflags)
+vg_local_cflags := $(common_cflags)
+vg_local_whole_static_libraries := libreplacemalloc_toolpreload
 
-LOCAL_LDFLAGS := $(preload_ldflags)
-
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_WHOLE_STATIC_LIBRARIES := libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux
-
-include $(BUILD_SHARED_LIBRARY)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build none-$(TARGET_ARCH)-linux
-include $(CLEAR_VARS)
+vg_local_module := none
+vg_local_module_class := SHARED_LIBRARIES
+vg_local_module_relative_path := valgrind
+vg_local_target := EXECUTABLE
 
-LOCAL_MODULE := none-$(TARGET_ARCH)-linux
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE_RELATIVE_PATH := valgrind
-LOCAL_ARM_MODE := arm
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-LOCAL_NO_CRT := true
-LOCAL_SYSTEM_SHARED_LIBRARIES :=
+#LOCAL_FORCE_STATIC_EXECUTABLE := true
+vg_local_no_crt := true
+vg_local_without_system_shared_libraries := true
 
-LOCAL_SRC_FILES := \
+vg_local_src_files := \
 	none/nl_main.c
 
-LOCAL_C_INCLUDES := $(common_includes)
+vg_local_ldflags := $(tool_ldflags)
+vg_local_cflags := $(common_cflags)
+vg_local_static_libraries := libcoregrind libvex
 
-LOCAL_LDFLAGS := $(tool_ldflags)
-
-LOCAL_CFLAGS := $(common_cflags)
-
-LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
-
-LOCAL_STATIC_LIBRARIES := libcoregrind-$(TARGET_ARCH)-linux libvex-$(TARGET_ARCH)-linux
-
-include $(BUILD_EXECUTABLE)
+include $(LOCAL_PATH)/Android.build_all.mk
 
 # Build valgrind
 include $(CLEAR_VARS)
-
 LOCAL_MODULE := valgrind
-LOCAL_MODULE_TAGS := optional
 LOCAL_ARM_MODE := arm
-
 LOCAL_SRC_FILES := \
 	coregrind/launcher-linux.c \
 	coregrind/m_debuglog.c
 
 LOCAL_C_INCLUDES := $(common_includes)
-
 LOCAL_CFLAGS := $(common_cflags)
 
 LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
-LOCAL_CFLAGS_$(TARGET_2ND_ARCH) = $(target_2nd_arch_cflags)
 
 include $(BUILD_EXECUTABLE)
 
-# Build tests (some of them)...
+# Build tests (one of them)...
+# TODO: tests need separate build framework it terms of 2ND_ARCH
 ifeq ($(TARGET_ARCH),arm)
 test := v6intThumb
 include $(LOCAL_PATH)/Android.test.mk
@@ -729,13 +592,13 @@
 
 # Copy prebuilt suppressions
 include $(CLEAR_VARS)
-
 LOCAL_MODULE := default.supp
-LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 LOCAL_MODULE_RELATIVE_PATH := valgrind
 LOCAL_SRC_FILES := bionic.supp
 
 include $(BUILD_PREBUILT)
 
+#include bionic/libc/Android.mk
+
 endif