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

Commit eca59f3d authored by Martin Stjernholm's avatar Martin Stjernholm Committed by Gerrit Code Review
Browse files

Merge changes Ied267053,Ica29c649

* changes:
  Fix prebuilt header files to produce proper AndroidMk entries.
  Reduce code duplication for testing the two header modules.
parents a71eabb7 d51cb5c1
Loading
Loading
Loading
Loading
+28 −36
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ package cc

import (
	"fmt"
	"strings"
	"testing"

	"android/soong/android"
@@ -25,8 +24,8 @@ import (
)

func TestLibraryHeaders(t *testing.T) {
	ctx := testCc(t, `
	cc_library_headers {
	bp := `
		%s {
			name: "headers",
			export_include_dirs: ["my_include"],
		}
@@ -35,34 +34,27 @@ func TestLibraryHeaders(t *testing.T) {
			srcs: ["foo.c"],
			header_libs: ["headers"],
		}
	`)
	`

	for _, headerModule := range []string{"cc_library_headers", "cc_prebuilt_library_headers"} {
		t.Run(headerModule, func(t *testing.T) {
			ctx := testCc(t, fmt.Sprintf(bp, headerModule))

			// test if header search paths are correctly added
			cc := ctx.ModuleForTests("lib", "android_arm64_armv8-a_static").Rule("cc")
	cflags := cc.Args["cFlags"]
	if !strings.Contains(cflags, " -Imy_include ") {
		t.Errorf("cflags for libsystem must contain -Imy_include, but was %#v.", cflags)
	}
}
			android.AssertStringDoesContain(t, "cFlags for lib module", cc.Args["cFlags"], " -Imy_include ")

func TestPrebuiltLibraryHeaders(t *testing.T) {
	ctx := testCc(t, `
	cc_prebuilt_library_headers {
		name: "headers",
		export_include_dirs: ["my_include"],
	}
	cc_library_static {
		name: "lib",
		srcs: ["foo.c"],
		header_libs: ["headers"],
	}
	`)
			// Test that there's a valid AndroidMk entry.
			headers := ctx.ModuleForTests("headers", "android_arm64_armv8-a").Module()
			e := android.AndroidMkEntriesForTest(t, ctx, headers)[0]

	// test if header search paths are correctly added
	cc := ctx.ModuleForTests("lib", "android_arm64_armv8-a_static").Rule("cc")
	cflags := cc.Args["cFlags"]
	if !strings.Contains(cflags, " -Imy_include ") {
		t.Errorf("cflags for libsystem must contain -Imy_include, but was %#v.", cflags)
			// This duplicates the tests done in AndroidMkEntries.write. It would be
			// better to test its output, but there are no test functions that capture that.
			android.AssertBoolEquals(t, "AndroidMkEntries.Disabled", false, e.Disabled)
			android.AssertBoolEquals(t, "AndroidMkEntries.OutputFile.Valid()", true, e.OutputFile.Valid())

			android.AssertStringListContains(t, "LOCAL_EXPORT_CFLAGS for headers module", e.EntryMap["LOCAL_EXPORT_CFLAGS"], "-Imy_include")
		})
	}
}

+7 −1
Original line number Diff line number Diff line
@@ -197,7 +197,13 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
	if p.header() {
		ctx.SetProvider(HeaderLibraryInfoProvider, HeaderLibraryInfo{})

		return nil
		// Need to return an output path so that the AndroidMk logic doesn't skip
		// the prebuilt header. For compatibility, in case Android.mk files use a
		// header lib in LOCAL_STATIC_LIBRARIES, create an empty ar file as
		// placeholder, just like non-prebuilt header modules do in linkStatic().
		ph := android.PathForModuleOut(ctx, ctx.ModuleName()+staticLibraryExtension)
		transformObjToStaticLib(ctx, nil, nil, builderFlags{}, ph, nil, nil)
		return ph
	}

	return nil