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