Android.mk revision d7398f146dad064dece704db9e13912f65da0acc
1LOCAL_PATH:= $(call my-dir) 2include $(CLEAR_VARS) 3 4ifeq ($(TARGET_ARCH),x86) 5 linker_begin_extension := c 6else 7 linker_begin_extension := S 8endif 9 10LOCAL_SRC_FILES:= \ 11 arch/$(TARGET_ARCH)/begin.$(linker_begin_extension) \ 12 debugger.cpp \ 13 dlfcn.cpp \ 14 linker.cpp \ 15 linker_environ.cpp \ 16 linker_phdr.cpp \ 17 rt.cpp \ 18 19LOCAL_LDFLAGS := -shared -Wl,--exclude-libs,ALL 20 21LOCAL_CFLAGS += -fno-stack-protector \ 22 -Wstrict-overflow=5 \ 23 -fvisibility=hidden \ 24 -Wall -Wextra -Werror \ 25 26# We need to access Bionic private headers in the linker. 27LOCAL_CFLAGS += -I$(LOCAL_PATH)/../libc/ 28 29ifeq ($(TARGET_ARCH),arm) 30 LOCAL_CFLAGS += -DANDROID_ARM_LINKER 31endif 32 33ifeq ($(TARGET_ARCH),mips) 34 LOCAL_CFLAGS += -DANDROID_MIPS_LINKER 35endif 36 37ifeq ($(TARGET_ARCH),x86) 38 LOCAL_CFLAGS += -DANDROID_X86_LINKER 39endif 40 41ifeq ($(TARGET_ARCH),x86_64) 42 LOCAL_CFLAGS += -DANDROID_X86_64_LINKER 43endif 44 45ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86_64)) 46 LOCAL_MODULE := linker64 47else 48 LOCAL_MODULE := linker 49endif 50 51LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 52 53LOCAL_STATIC_LIBRARIES := libc_nomalloc 54 55#LOCAL_FORCE_STATIC_EXECUTABLE := true # not necessary when not including BUILD_EXECUTABLE 56 57# 58# include $(BUILD_EXECUTABLE) 59# 60# Instead of including $(BUILD_EXECUTABLE), we execute the steps to create an executable by 61# hand, as we want to insert an extra step that is not supported by the build system, and 62# is probably specific the linker only, so there's no need to modify the build system for 63# the purpose. 64 65LOCAL_MODULE_CLASS := EXECUTABLES 66LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX) 67 68# we don't want crtbegin.o (because we have begin.o), so unset it 69# just for this module 70LOCAL_NO_CRT := true 71 72# TODO: split out the asflags. 73LOCAL_ASFLAGS := $(LOCAL_CFLAGS) 74 75include $(BUILD_SYSTEM)/dynamic_binary.mk 76 77# See build/core/executable.mk 78$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(TARGET_GLOBAL_LD_DIRS) 79$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(TARGET_GLOBAL_LDFLAGS) 80$(linked_module): PRIVATE_TARGET_FDO_LIB := $(TARGET_FDO_LIB) 81$(linked_module): PRIVATE_TARGET_LIBGCC := $(TARGET_LIBGCC) 82$(linked_module): PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_CRTBEGIN_DYNAMIC_O) 83$(linked_module): PRIVATE_TARGET_CRTBEGIN_STATIC_O := $(TARGET_CRTBEGIN_STATIC_O) 84$(linked_module): PRIVATE_TARGET_CRTEND_O := $(TARGET_CRTEND_O) 85$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $(TARGET_CRTEND_O) 86 $(transform-o-to-static-executable) 87 @echo "target PrefixSymbols: $(PRIVATE_MODULE) ($@)" 88 $(hide) $(TARGET_OBJCOPY) --prefix-symbols=__dl_ $@ 89 90# 91# end of BUILD_EXECUTABLE hack 92# 93