build linker and linker64 on 64-bit architectures

Change-Id: I400bbaf5a779fc427de4c3d86c66548b0179b10d
diff --git a/linker/Android.mk b/linker/Android.mk
index bdc54de..1d03a9c 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -1,86 +1,9 @@
 LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
 
-ifeq ($(TARGET_ARCH),x86)
-    linker_begin_extension := c
-else
-    linker_begin_extension := S
+linker_2nd_arch_var_prefix :=
+include $(LOCAL_PATH)/linker.mk
+
+ifdef TARGET_2ND_ARCH
+linker_2nd_arch_var_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
+include $(LOCAL_PATH)/linker.mk
 endif
-
-LOCAL_SRC_FILES:= \
-    arch/$(TARGET_ARCH)/begin.$(linker_begin_extension) \
-    debugger.cpp \
-    dlfcn.cpp \
-    linker.cpp \
-    linker_environ.cpp \
-    linker_phdr.cpp \
-    rt.cpp \
-
-LOCAL_LDFLAGS := \
-    -shared \
-    -Wl,-Bsymbolic \
-    -Wl,--exclude-libs,ALL \
-
-LOCAL_CFLAGS += \
-    -fno-stack-protector \
-    -Wstrict-overflow=5 \
-    -fvisibility=hidden \
-    -Wall -Wextra -Werror \
-
-LOCAL_CONLYFLAGS += \
-    -std=gnu99 \
-
-LOCAL_CPPFLAGS += \
-    -std=gnu++11 \
-
-# We need to access Bionic private headers in the linker.
-LOCAL_CFLAGS += -I$(LOCAL_PATH)/../libc/
-
-ifeq ($(TARGET_IS_64_BIT),true)
-    LOCAL_MODULE := linker64
-else
-    LOCAL_MODULE := linker
-endif
-
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-
-LOCAL_STATIC_LIBRARIES := libc_nomalloc
-
-#LOCAL_FORCE_STATIC_EXECUTABLE := true # not necessary when not including BUILD_EXECUTABLE
-
-#
-# include $(BUILD_EXECUTABLE)
-#
-# Instead of including $(BUILD_EXECUTABLE), we execute the steps to create an executable by
-# hand, as we want to insert an extra step that is not supported by the build system, and
-# is probably specific the linker only, so there's no need to modify the build system for
-# the purpose.
-
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX)
-
-# we don't want crtbegin.o (because we have begin.o), so unset it
-# just for this module
-LOCAL_NO_CRT := true
-
-# TODO: split out the asflags.
-LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
-
-include $(BUILD_SYSTEM)/dynamic_binary.mk
-
-# See build/core/executable.mk
-$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(TARGET_GLOBAL_LD_DIRS)
-$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(TARGET_GLOBAL_LDFLAGS)
-$(linked_module): PRIVATE_TARGET_FDO_LIB := $(TARGET_FDO_LIB)
-$(linked_module): PRIVATE_TARGET_LIBGCC := $(TARGET_LIBGCC)
-$(linked_module): PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_CRTBEGIN_DYNAMIC_O)
-$(linked_module): PRIVATE_TARGET_CRTBEGIN_STATIC_O := $(TARGET_CRTBEGIN_STATIC_O)
-$(linked_module): PRIVATE_TARGET_CRTEND_O := $(TARGET_CRTEND_O)
-$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $(TARGET_CRTEND_O)
-	$(transform-o-to-static-executable)
-	@echo "target PrefixSymbols: $(PRIVATE_MODULE) ($@)"
-	$(hide) $(TARGET_OBJCOPY) --prefix-symbols=__dl_ $@
-
-#
-# end of BUILD_EXECUTABLE hack
-#