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

Unverified Commit ea1c6d4f authored by Artem Karavashkin's avatar Artem Karavashkin Committed by Luca Stefani
Browse files

rust: config: Fix missing CPU variant LD flags in Rust



This change fixes an issue where CPU variant LD flags from the cc toolchain were not applied to Rust libraries.
Rust linker flags are now in sync with cc.

Co-authored-by: default avatarLuca Stefani <luca.stefani.ge1@gmail.com>
Change-Id: Iaeecb363f98197f327b7bfccf03e5dc0f8252db8
parent 067023bf
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import (
	"strings"

	"android/soong/android"

	cc_config "android/soong/cc/config"
)

var (
@@ -73,6 +75,7 @@ func init() {
type toolchainArm64 struct {
	toolchain64Bit
	toolchainRustFlags string
	lldflags string
}

func (t *toolchainArm64) RustTriple() string {
@@ -81,7 +84,7 @@ func (t *toolchainArm64) RustTriple() string {

func (t *toolchainArm64) ToolchainLinkFlags() string {
	// Prepend the lld flags from cc_config so we stay in sync with cc
	return "${config.DeviceGlobalLinkFlags} ${cc_config.Arm64Lldflags} ${config.Arm64ToolchainLinkFlags}"
	return "${config.DeviceGlobalLinkFlags} " + t.lldflags + " ${config.Arm64ToolchainLinkFlags}"
}

func (t *toolchainArm64) ToolchainRustFlags() string {
@@ -119,7 +122,10 @@ func Arm64ToolchainFactory(arch android.Arch) Toolchain {
		toolchainRustFlags = append(toolchainRustFlags, Arm64ArchFeatureRustFlags[feature]...)
	}

	cc_toolchain := cc_config.FindToolchain(android.Android, arch)

	return &toolchainArm64{
		toolchainRustFlags: strings.Join(toolchainRustFlags, " "),
		lldflags: strings.ReplaceAll(cc_toolchain.Lldflags(), "${config.", "${cc_config."),
	}
}
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import (
	"strings"

	"android/soong/android"

	cc_config "android/soong/cc/config"
)

var (
@@ -50,6 +52,7 @@ func init() {
type toolchainArm struct {
	toolchain32Bit
	toolchainRustFlags string
	lldflags string
}

func (t *toolchainArm) RustTriple() string {
@@ -58,7 +61,7 @@ func (t *toolchainArm) RustTriple() string {

func (t *toolchainArm) ToolchainLinkFlags() string {
	// Prepend the lld flags from cc_config so we stay in sync with cc
	return "${config.DeviceGlobalLinkFlags} ${cc_config.ArmLldflags} ${config.ArmToolchainLinkFlags}"
	return "${config.DeviceGlobalLinkFlags} " + t.lldflags + " ${config.ArmToolchainLinkFlags}"
}

func (t *toolchainArm) ToolchainRustFlags() string {
@@ -89,7 +92,10 @@ func ArmToolchainFactory(arch android.Arch) Toolchain {
		toolchainRustFlags = append(toolchainRustFlags, ArmArchFeatureRustFlags[feature]...)
	}

	cc_toolchain := cc_config.FindToolchain(android.Android, arch)

	return &toolchainArm{
		toolchainRustFlags: strings.Join(toolchainRustFlags, " "),
		lldflags: strings.ReplaceAll(cc_toolchain.Lldflags(), "${config.", "${cc_config."),
	}
}
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import (
	"strings"

	"android/soong/android"

	cc_config "android/soong/cc/config"
)

var (
@@ -50,6 +52,7 @@ func init() {
type toolchainRiscv64 struct {
	toolchain64Bit
	toolchainRustFlags string
	lldflags string
}

func (t *toolchainRiscv64) RustTriple() string {
@@ -58,7 +61,7 @@ func (t *toolchainRiscv64) RustTriple() string {

func (t *toolchainRiscv64) ToolchainLinkFlags() string {
	// Prepend the lld flags from cc_config so we stay in sync with cc
	return "${config.DeviceGlobalLinkFlags} ${cc_config.Riscv64Lldflags} ${config.Riscv64ToolchainLinkFlags}"
	return "${config.DeviceGlobalLinkFlags} " + t.lldflags + " ${config.Riscv64ToolchainLinkFlags}"
}

func (t *toolchainRiscv64) ToolchainRustFlags() string {
@@ -91,7 +94,10 @@ func Riscv64ToolchainFactory(arch android.Arch) Toolchain {
		toolchainRustFlags = append(toolchainRustFlags, Riscv64ArchFeatureRustFlags[feature]...)
	}

	cc_toolchain := cc_config.FindToolchain(android.Android, arch)

	return &toolchainRiscv64{
		toolchainRustFlags: strings.Join(toolchainRustFlags, " "),
		lldflags: strings.ReplaceAll(cc_toolchain.Lldflags(), "${config.", "${cc_config."),
	}
}
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import (
	"strings"

	"android/soong/android"

	cc_config "android/soong/cc/config"
)

var (
@@ -61,6 +63,7 @@ func init() {
type toolchainX86_64 struct {
	toolchain64Bit
	toolchainRustFlags string
	lldflags string
}

func (t *toolchainX86_64) RustTriple() string {
@@ -69,7 +72,7 @@ func (t *toolchainX86_64) RustTriple() string {

func (t *toolchainX86_64) ToolchainLinkFlags() string {
	// Prepend the lld flags from cc_config so we stay in sync with cc
	return "${config.DeviceGlobalLinkFlags} ${cc_config.X86_64Lldflags} ${config.X86_64ToolchainLinkFlags}"
	return "${config.DeviceGlobalLinkFlags} " + t.lldflags + " ${config.X86_64ToolchainLinkFlags}"
}

func (t *toolchainX86_64) ToolchainRustFlags() string {
@@ -100,7 +103,10 @@ func x86_64ToolchainFactory(arch android.Arch) Toolchain {
		toolchainRustFlags = append(toolchainRustFlags, x86_64ArchFeatureRustFlags[feature]...)
	}

	cc_toolchain := cc_config.FindToolchain(android.Android, arch)

	return &toolchainX86_64{
		toolchainRustFlags: strings.Join(toolchainRustFlags, " "),
		lldflags: strings.ReplaceAll(cc_toolchain.Lldflags(), "${config.", "${cc_config."),
	}
}
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import (
	"strings"

	"android/soong/android"

	cc_config "android/soong/cc/config"
)

var (
@@ -63,6 +65,7 @@ func init() {
type toolchainX86 struct {
	toolchain32Bit
	toolchainRustFlags string
	lldflags string
}

func (t *toolchainX86) RustTriple() string {
@@ -71,7 +74,7 @@ func (t *toolchainX86) RustTriple() string {

func (t *toolchainX86) ToolchainLinkFlags() string {
	// Prepend the lld flags from cc_config so we stay in sync with cc
	return "${config.DeviceGlobalLinkFlags} ${cc_config.X86Lldflags} ${config.X86ToolchainLinkFlags}"
	return "${config.DeviceGlobalLinkFlags} " + t.lldflags + " ${config.X86ToolchainLinkFlags}"
}

func (t *toolchainX86) ToolchainRustFlags() string {
@@ -102,7 +105,10 @@ func x86ToolchainFactory(arch android.Arch) Toolchain {
		toolchainRustFlags = append(toolchainRustFlags, x86ArchFeatureRustFlags[feature]...)
	}

	cc_toolchain := cc_config.FindToolchain(android.Android, arch)

	return &toolchainX86{
		toolchainRustFlags: strings.Join(toolchainRustFlags, " "),
		lldflags: strings.ReplaceAll(cc_toolchain.Lldflags(), "${config.", "${cc_config."),
	}
}