linker: extract defaults and source files
Move source files to filegroup and extract c/ldflags and
version-script to linker_defaults.
Bug: http://b/71494052
Test: make
Change-Id: Ic82885e1c006f91a8446978fabd214f87cd20510
diff --git a/linker/Android.bp b/linker/Android.bp
index b809f76..1e14ee3 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -66,8 +66,8 @@
include_dirs: ["bionic/libc"],
}
-cc_binary {
- defaults: ["linux_bionic_supported"],
+filegroup {
+ name: "linker_sources",
srcs: [
"dlfcn.cpp",
"linker.cpp",
@@ -89,49 +89,74 @@
"linker_utils.cpp",
"rt.cpp",
],
+}
+filegroup {
+ name: "linker_sources_arm",
+ srcs: [
+ "arch/arm/begin.S",
+ "linker_exidx_static.c",
+ ],
+}
+
+filegroup {
+ name: "linker_sources_arm64",
+ srcs: [
+ "arch/arm64/begin.S",
+ ],
+}
+
+filegroup {
+ name: "linker_sources_x86",
+ srcs: [
+ "arch/x86/begin.S",
+ ],
+}
+
+filegroup {
+ name: "linker_sources_x86_64",
+ srcs: [
+ "arch/x86_64/begin.S",
+ ],
+}
+
+filegroup {
+ name: "linker_sources_mips",
+ srcs: [
+ "arch/mips/begin.S",
+ "linker_mips.cpp",
+ ],
+}
+
+filegroup {
+ name: "linker_sources_mips64",
+ srcs: [
+ "arch/mips64/begin.S",
+ "linker_mips.cpp",
+ ],
+}
+
+filegroup {
+ name: "linker_version_script",
+ srcs: ["linker.generic.map"],
+}
+
+filegroup {
+ name: "linker_version_script_arm",
+ srcs: ["linker.arm.map"],
+}
+
+cc_defaults {
+ name: "linker_defaults",
arch: {
arm: {
- srcs: [
- "arch/arm/begin.S",
- "linker_exidx_static.c",
- ],
-
cflags: ["-D__work_around_b_24465209__"],
- version_script: "linker.arm.map",
- },
- arm64: {
- srcs: ["arch/arm64/begin.S"],
- version_script: "linker.generic.map",
},
x86: {
- srcs: ["arch/x86/begin.S"],
cflags: ["-D__work_around_b_24465209__"],
- version_script: "linker.generic.map",
- },
- x86_64: {
- srcs: ["arch/x86_64/begin.S"],
- version_script: "linker.generic.map",
- },
- mips: {
- srcs: [
- "arch/mips/begin.S",
- "linker_mips.cpp",
- ],
- version_script: "linker.generic.map",
- },
- mips64: {
- srcs: [
- "arch/mips64/begin.S",
- "linker_mips.cpp",
- ],
- version_script: "linker.generic.map",
},
},
- // We need to access Bionic private headers in the linker.
- include_dirs: ["bionic/libc"],
-
// -shared is used to overwrite the -Bstatic and -static
// flags triggered by LOCAL_FORCE_STATIC_EXECUTABLE.
// This dynamic linker is actually a shared object linked with static libraries.
@@ -185,6 +210,57 @@
// just for this module
nocrt: true,
+ static_executable: true,
+
+ // Leave the symbols in the shared library so that stack unwinders can produce
+ // meaningful name resolution.
+ strip: {
+ keep_symbols: true,
+ },
+
+ // Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
+ // looking up symbols in the linker by mistake.
+ prefix_symbols: "__dl_",
+
+ sanitize: {
+ hwaddress: false,
+ },
+}
+
+cc_binary {
+ defaults: ["linux_bionic_supported", "linker_defaults"],
+ srcs: [ ":linker_sources" ],
+
+ arch: {
+ arm: {
+ srcs: [ ":linker_sources_arm" ],
+ version_script: ":linker_version_script_arm",
+ },
+ arm64: {
+ srcs: [":linker_sources_arm64"],
+ version_script: ":linker_version_script",
+ },
+ x86: {
+ srcs: [":linker_sources_x86"],
+ version_script: ":linker_version_script",
+ },
+ x86_64: {
+ srcs: [":linker_sources_x86_64"],
+ version_script: ":linker_version_script",
+ },
+ mips: {
+ srcs: [":linker_sources_mips"],
+ version_script: ":linker_version_script",
+ },
+ mips64: {
+ srcs: [":linker_sources_mips64"],
+ version_script: ":linker_version_script",
+ },
+ },
+
+ // We need to access Bionic private headers in the linker.
+ include_dirs: ["bionic/libc"],
+
static_libs: [
"libc_nomalloc",
"libm",
@@ -202,7 +278,6 @@
// to overwrite any other malloc implementations by other static libraries.
"liblinker_malloc",
],
- static_executable: true,
name: "linker",
symlinks: ["linker_asan"],
@@ -218,20 +293,6 @@
},
},
compile_multilib: "both",
-
- // Leave the symbols in the shared library so that stack unwinders can produce
- // meaningful name resolution.
- strip: {
- keep_symbols: true,
- },
-
- // Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
- // looking up symbols in the linker by mistake.
- prefix_symbols: "__dl_",
-
- sanitize: {
- hwaddress: false,
- },
}
cc_library {