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

Commit 51da9338 authored by Liz Kammer's avatar Liz Kammer Committed by Gerrit Code Review
Browse files

Merge "Update version_script to be handled as linkopt"

parents 1e78f581 d2871189
Loading
Loading
Loading
Loading
+12 −39
Original line number Diff line number Diff line
@@ -803,8 +803,9 @@ cc_library {
		blueprint: soongCcLibraryPreamble,
		expectedBazelTargets: []string{`cc_library(
    name = "a",
    additional_linker_inputs = ["v.map"],
    linkopts = ["-Wl,--version-script,$(location v.map)"],
    srcs = ["a.cpp"],
    version_script = "v.map",
)`},
	})
}
@@ -838,12 +839,17 @@ cc_library {
		blueprint: soongCcLibraryPreamble,
		expectedBazelTargets: []string{`cc_library(
    name = "a",
    srcs = ["a.cpp"],
    version_script = select({
        "//build/bazel/platforms/arch:arm": "arm.map",
        "//build/bazel/platforms/arch:arm64": "arm64.map",
        "//conditions:default": None,
    additional_linker_inputs = select({
        "//build/bazel/platforms/arch:arm": ["arm.map"],
        "//build/bazel/platforms/arch:arm64": ["arm64.map"],
        "//conditions:default": [],
    }),
    linkopts = select({
        "//build/bazel/platforms/arch:arm": ["-Wl,--version-script,$(location arm.map)"],
        "//build/bazel/platforms/arch:arm64": ["-Wl,--version-script,$(location arm64.map)"],
        "//conditions:default": [],
    }),
    srcs = ["a.cpp"],
)`},
	})
}
@@ -1010,39 +1016,6 @@ func TestCcLibraryCppFlagsGoesIntoCopts(t *testing.T) {
	})
}

func TestCcLibraryLabelAttributeGetTargetProperties(t *testing.T) {
	runCcLibraryTestCase(t, bp2buildTestCase{
		description:                        "cc_library GetTargetProperties on a LabelAttribute",
		moduleTypeUnderTest:                "cc_library",
		moduleTypeUnderTestFactory:         cc.LibraryFactory,
		moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build,
		blueprint: soongCcLibraryPreamble + `
cc_library {
   name: "a",
   srcs: ["a.cpp"],
   target: {
     android_arm: {
       version_script: "android_arm.map",
     },
     linux_bionic_arm64: {
       version_script: "linux_bionic_arm64.map",
     },
   },
    include_build_directory: false,
}
    `,
		expectedBazelTargets: []string{`cc_library(
    name = "a",
    srcs = ["a.cpp"],
    version_script = select({
        "//build/bazel/platforms/os_arch:android_arm": "android_arm.map",
        "//build/bazel/platforms/os_arch:linux_bionic_arm64": "linux_bionic_arm64.map",
        "//conditions:default": None,
    }),
)`},
	})
}

func TestCcLibraryExcludeLibs(t *testing.T) {
	runCcLibraryTestCase(t, bp2buildTestCase{
		moduleTypeUnderTest:                "cc_library",
+2 −1
Original line number Diff line number Diff line
@@ -361,7 +361,8 @@ cc_library_shared {
}`,
		expectedBazelTargets: []string{`cc_library_shared(
    name = "foo_shared",
    version_script = "version_script",
    additional_linker_inputs = ["version_script"],
    linkopts = ["-Wl,--version-script,$(location version_script)"],
)`},
	})
}
+15 −8
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
package cc

import (
	"fmt"
	"path/filepath"
	"strings"

@@ -397,7 +398,7 @@ type linkerAttributes struct {
	linkCrt                       bazel.BoolAttribute
	useLibcrt                     bazel.BoolAttribute
	linkopts                      bazel.StringListAttribute
	versionScript                 bazel.LabelAttribute
	additionalLinkerInputs        bazel.LabelListAttribute
	stripKeepSymbols              bazel.BoolAttribute
	stripKeepSymbolsAndDebugFrame bazel.BoolAttribute
	stripKeepSymbolsList          bazel.StringListAttribute
@@ -420,8 +421,8 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module)
	systemSharedDeps := bazel.LabelListAttribute{ForceSpecifyEmptyList: true}

	var linkopts bazel.StringListAttribute
	var versionScript bazel.LabelAttribute
	var linkCrt bazel.BoolAttribute
	var additionalLinkerInputs bazel.LabelListAttribute
	var useLibcrt bazel.BoolAttribute

	var stripKeepSymbols bazel.BoolAttribute
@@ -482,7 +483,6 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module)
				headerDeps.SetSelectValue(axis, config, hDeps.export)
				implementationHeaderDeps.SetSelectValue(axis, config, hDeps.implementation)

				linkopts.SetSelectValue(axis, config, baseLinkerProps.Ldflags)
				if !BoolDefault(baseLinkerProps.Pack_relocations, packRelocationsDefault) {
					axisFeatures = append(axisFeatures, "disable_pack_relocations")
				}
@@ -491,9 +491,16 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module)
					axisFeatures = append(axisFeatures, "-no_undefined_symbols")
				}

				var linkerFlags []string
				if len(baseLinkerProps.Ldflags) > 0 {
					linkerFlags = append(linkerFlags, baseLinkerProps.Ldflags...)
				}
				if baseLinkerProps.Version_script != nil {
					versionScript.SetSelectValue(axis, config, android.BazelLabelForModuleSrcSingle(ctx, *baseLinkerProps.Version_script))
					label := android.BazelLabelForModuleSrcSingle(ctx, *baseLinkerProps.Version_script)
					additionalLinkerInputs.SetSelectValue(axis, config, bazel.LabelList{Includes: []bazel.Label{label}})
					linkerFlags = append(linkerFlags, fmt.Sprintf("-Wl,--version-script,$(location %s)", label.Label))
				}
				linkopts.SetSelectValue(axis, config, linkerFlags)
				useLibcrt.SetSelectValue(axis, config, baseLinkerProps.libCrt())

				// it's very unlikely for nocrt to be arch variant, so bp2build doesn't support it.
@@ -588,7 +595,7 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module)
		linkCrt:                linkCrt,
		linkopts:               linkopts,
		useLibcrt:              useLibcrt,
		versionScript: versionScript,
		additionalLinkerInputs: additionalLinkerInputs,

		// Strip properties
		stripKeepSymbols:              stripKeepSymbols,
+10 −12
Original line number Diff line number Diff line
@@ -253,8 +253,8 @@ type bazelCcLibraryAttributes struct {
	Cpp_std *string

	// This is shared only.
	Version_script bazel.LabelAttribute
	Link_crt                 bazel.BoolAttribute
	Additional_linker_inputs bazel.LabelListAttribute

	// Common properties shared between both shared and static variants.
	Shared staticOrSharedAttributes
@@ -332,7 +332,7 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) {
		Stl:                         compilerAttrs.stl,
		Cpp_std:                     compilerAttrs.cppStd,

		Version_script: linkerAttrs.versionScript,
		Additional_linker_inputs: linkerAttrs.additionalLinkerInputs,

		Strip: stripAttributes{
			Keep_symbols:                 linkerAttrs.stripKeepSymbols,
@@ -2402,7 +2402,6 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
		attrs = &bazelCcLibraryStaticAttributes{
			staticOrSharedAttributes: commonAttrs,

			Linkopts:               linkerAttrs.linkopts,
			Use_libcrt:             linkerAttrs.useLibcrt,
			Rtti:                   compilerAttrs.rtti,
			Stl:                    compilerAttrs.stl,
@@ -2437,7 +2436,7 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
			Export_system_includes:   exportedIncludes.SystemIncludes,
			Local_includes:           compilerAttrs.localIncludes,
			Absolute_includes:        compilerAttrs.absoluteIncludes,
			Version_script:         linkerAttrs.versionScript,
			Additional_linker_inputs: linkerAttrs.additionalLinkerInputs,

			Strip: stripAttributes{
				Keep_symbols:                 linkerAttrs.stripKeepSymbols,
@@ -2463,7 +2462,6 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
type bazelCcLibraryStaticAttributes struct {
	staticOrSharedAttributes

	Linkopts   bazel.StringListAttribute
	Use_libcrt bazel.BoolAttribute
	Rtti       bazel.BoolAttribute
	Stl        *string
@@ -2504,7 +2502,7 @@ type bazelCcLibrarySharedAttributes struct {
	Hdrs                   bazel.LabelListAttribute

	Strip                    stripAttributes
	Version_script bazel.LabelAttribute
	Additional_linker_inputs bazel.LabelListAttribute

	Cppflags   bazel.StringListAttribute
	Conlyflags bazel.StringListAttribute