1// Collect target specific code generation libraries
2package {
3    // See: http://go/android-license-faq
4    // A large-scale-change added 'default_applicable_licenses' to import
5    // all of the 'license_kinds' from "frameworks_compile_mclinker_license"
6    // to get the below license kinds:
7    //   SPDX-license-identifier-NCSA
8    default_applicable_licenses: ["frameworks_compile_mclinker_license"],
9}
10
11MCLD_ARM_LIBS = [
12    "libmcldARMTarget",
13    "libmcldARMInfo",
14]
15MCLD_AARCH64_LIBS = [
16    "libmcldAArch64Target",
17    "libmcldAArch64Info",
18]
19MCLD_MIPS_LIBS = [
20    "libmcldMipsTarget",
21    "libmcldMipsInfo",
22]
23MCLD_X86_LIBS = [
24    "libmcldX86Target",
25    "libmcldX86Info",
26]
27
28// Build Options.inc from Options.td
29llvm_tblgen {
30    name: "mcld-gen-options",
31    in: "Options.td",
32    outs: ["Options.inc"],
33}
34
35cc_binary {
36    name: "ld.mc",
37    defaults: ["mcld-defaults"],
38    host_supported: true,
39    generated_headers: ["mcld-gen-options"],
40
41    srcs: ["Main.cpp"],
42
43    // arch-specific static libraries depend on libmcldTarget.
44    // Can be removed once soong supports transitive static library dependencies
45    static_libs: [
46        "libmcldADT",
47        "libmcldCore",
48        "libmcldFragment",
49        "libmcldLD",
50        "libmcldLDVariant",
51        "libmcldMC",
52        "libmcldObject",
53        "libmcldScript",
54        "libmcldSupport",
55        "libmcldTarget",
56    ],
57
58    shared_libs: [
59        "libLLVM_android",
60        "libz",
61    ],
62
63    target: {
64        host: {
65            static_libs: MCLD_ARM_LIBS + MCLD_AARCH64_LIBS +
66                MCLD_MIPS_LIBS + MCLD_X86_LIBS,
67        },
68
69        // Add target specific code generation libraries
70        android_arm: {
71            // Include AARCH64 libs to enable 64-bit linking on ARM targets
72            static_libs: MCLD_ARM_LIBS + MCLD_AARCH64_LIBS,
73        },
74        android_arm64: {
75            // Include ARM libs to enable 32-bit linking on AARCH64 targets
76            static_libs: MCLD_ARM_LIBS + MCLD_AARCH64_LIBS,
77        },
78        android_x86: {
79            static_libs: MCLD_X86_LIBS,
80        },
81        android_x86_64: {
82            static_libs: MCLD_X86_LIBS,
83        },
84        arm_on_x86: {
85            static_libs: MCLD_ARM_LIBS + MCLD_AARCH64_LIBS,
86        },
87        arm_on_x86_64: {
88            static_libs: MCLD_ARM_LIBS + MCLD_AARCH64_LIBS,
89        },
90    },
91}
92