Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c188bea authored by Yi Kong's avatar Yi Kong
Browse files

Add an option for libraries to opt out of libcrt

Test: m checkbuild
Bug: 29275768
Change-Id: I9c0999ddc15ad152c47089509f91dc1dc901f7e4
parent 38441856
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -59,6 +59,9 @@ type BaseLinkerProperties struct {
	// don't link in libgcc.a
	No_libgcc *bool

	// don't link in libclang_rt.builtins-*.a
	No_libcrt *bool

	// Use clang lld instead of gnu ld.
	Use_clang_lld *bool `android:"arch_variant"`

@@ -216,11 +219,15 @@ func (linker *baseLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
	}

	if ctx.toolchain().Bionic() {
		// Allow individual projects to opt out of libcrt,builtins
		// b/117565638
		if !Bool(linker.Properties.No_libcrt) {
			// libclang_rt.builtins, libgcc and libatomic have to be last on the command line
			// TODO: Also enable for libc and libm
			if ctx.ModuleName() != "libc" && ctx.ModuleName() != "libm" {
				deps.LateStaticLibs = append(deps.LateStaticLibs, config.BuiltinsRuntimeLibrary(ctx.toolchain()))
			}
		}

		deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic")
		if !Bool(linker.Properties.No_libgcc) {