188b44feb7dd792348f2755c30cc7356509929917Elliott HughesLOCAL_PATH := $(call my-dir) 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 3406a75d371361388fe179950a3de459ae7e16f33Colin Crossinclude $(CLEAR_VARS) 4406a75d371361388fe179950a3de459ae7e16f33Colin Cross 5406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_SRC_FILES:= \ 6406a75d371361388fe179950a3de459ae7e16f33Colin Cross debugger.cpp \ 7406a75d371361388fe179950a3de459ae7e16f33Colin Cross dlfcn.cpp \ 8406a75d371361388fe179950a3de459ae7e16f33Colin Cross linker.cpp \ 9d597d263bc32422402d4810ce4ec070f0227c2f7Dmitriy Ivanov linker_allocator.cpp \ 10406a75d371361388fe179950a3de459ae7e16f33Colin Cross linker_environ.cpp \ 11406a75d371361388fe179950a3de459ae7e16f33Colin Cross linker_phdr.cpp \ 12406a75d371361388fe179950a3de459ae7e16f33Colin Cross rt.cpp \ 13406a75d371361388fe179950a3de459ae7e16f33Colin Cross 14406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_SRC_FILES_arm := arch/arm/begin.S 15406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_SRC_FILES_arm64 := arch/arm64/begin.S 16406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_SRC_FILES_x86 := arch/x86/begin.c 17406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_SRC_FILES_x86_64 := arch/x86_64/begin.S 18406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_SRC_FILES_mips := arch/mips/begin.S 199d98ee17feb63d8bba2c115a0e3228c2558166d4Chris DearmanLOCAL_SRC_FILES_mips64 := arch/mips64/begin.S 20406a75d371361388fe179950a3de459ae7e16f33Colin Cross 21406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_LDFLAGS := \ 22406a75d371361388fe179950a3de459ae7e16f33Colin Cross -shared \ 23406a75d371361388fe179950a3de459ae7e16f33Colin Cross -Wl,-Bsymbolic \ 24406a75d371361388fe179950a3de459ae7e16f33Colin Cross -Wl,--exclude-libs,ALL \ 25406a75d371361388fe179950a3de459ae7e16f33Colin Cross 26406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_CFLAGS += \ 27406a75d371361388fe179950a3de459ae7e16f33Colin Cross -fno-stack-protector \ 28406a75d371361388fe179950a3de459ae7e16f33Colin Cross -Wstrict-overflow=5 \ 29406a75d371361388fe179950a3de459ae7e16f33Colin Cross -fvisibility=hidden \ 30d286796fce1e6fff407b719a53eb2afbeb96c327Elliott Hughes -Wall -Wextra -Wunused -Werror \ 31406a75d371361388fe179950a3de459ae7e16f33Colin Cross 32406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_CONLYFLAGS += \ 33406a75d371361388fe179950a3de459ae7e16f33Colin Cross -std=gnu99 \ 34406a75d371361388fe179950a3de459ae7e16f33Colin Cross 35406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_CPPFLAGS += \ 36406a75d371361388fe179950a3de459ae7e16f33Colin Cross -std=gnu++11 \ 37406a75d371361388fe179950a3de459ae7e16f33Colin Cross 38406a75d371361388fe179950a3de459ae7e16f33Colin Cross# We need to access Bionic private headers in the linker. 39406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_CFLAGS += -I$(LOCAL_PATH)/../libc/ 40406a75d371361388fe179950a3de459ae7e16f33Colin Cross 41406a75d371361388fe179950a3de459ae7e16f33Colin Cross# we don't want crtbegin.o (because we have begin.o), so unset it 42406a75d371361388fe179950a3de459ae7e16f33Colin Cross# just for this module 43406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_NO_CRT := true 44406a75d371361388fe179950a3de459ae7e16f33Colin Cross# TODO: split out the asflags. 45406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_ASFLAGS := $(LOCAL_CFLAGS) 46406a75d371361388fe179950a3de459ae7e16f33Colin Cross 47406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk $(LOCAL_PATH)/linker_executable.mk 48406a75d371361388fe179950a3de459ae7e16f33Colin Cross 49406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_STATIC_LIBRARIES := libc_nomalloc 50406a75d371361388fe179950a3de459ae7e16f33Colin Cross 51406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_FORCE_STATIC_EXECUTABLE := true # not necessary when not including BUILD_EXECUTABLE 52406a75d371361388fe179950a3de459ae7e16f33Colin Cross 53406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_2ND_ARCH_VAR_PREFIX := $(linker_2nd_arch_var_prefix) 54406a75d371361388fe179950a3de459ae7e16f33Colin Cross 55406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_MODULE := linker 56406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_MODULE_STEM_32 := linker 57406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_MODULE_STEM_64 := linker64 58406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_MULTILIB := both 592258347f3bb770641a7d8fe311911ace8f69cb20Elliott Hughes 60be4348e7c73841766208f4eb771dde1455b26449Dmitriy Ivanov# Leave the symbols in the shared library so that stack unwinders can produce 61be4348e7c73841766208f4eb771dde1455b26449Dmitriy Ivanov# meaningful name resolution. 62be4348e7c73841766208f4eb771dde1455b26449Dmitriy IvanovLOCAL_STRIP_MODULE := keep_symbols 63be4348e7c73841766208f4eb771dde1455b26449Dmitriy Ivanov 64406a75d371361388fe179950a3de459ae7e16f33Colin Crossinclude $(LOCAL_PATH)/linker_executable.mk 6536ee4ab243427ce20549914fef85b5ca2ac75cdaColin Crossifdef TARGET_2ND_ARCH 66406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) 67406a75d371361388fe179950a3de459ae7e16f33Colin CrossOVERRIDE_BUILT_MODULE_PATH := 68406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_BUILT_MODULE := 69406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_INSTALLED_MODULE := 70406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_MODULE_STEM := 71406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_BUILT_MODULE_STEM := 72406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_INSTALLED_MODULE_STEM := 73406a75d371361388fe179950a3de459ae7e16f33Colin CrossLOCAL_INTERMEDIATE_TARGETS := 74406a75d371361388fe179950a3de459ae7e16f33Colin Crossinclude $(LOCAL_PATH)/linker_executable.mk 75d7398f146dad064dece704db9e13912f65da0accElliott Hughesendif 76d597d263bc32422402d4810ce4ec070f0227c2f7Dmitriy Ivanov 77d597d263bc32422402d4810ce4ec070f0227c2f7Dmitriy Ivanovinclude $(call first-makefiles-under,$(LOCAL_PATH)) 78