Improve error messages when output file is invalid

Bug: 155720025
Test: m nothing
Merged-In: I01eebaad58c5a6950e4419d0a8bf80bd02fed543
Change-Id: I01eebaad58c5a6950e4419d0a8bf80bd02fed543
(cherry picked from commit 712993cf0ceb6db1afbdf831b18f1121dd4758e8)
diff --git a/cc/binary_sdk_member.go b/cc/binary_sdk_member.go
index 1d9cc54..88ac513 100644
--- a/cc/binary_sdk_member.go
+++ b/cc/binary_sdk_member.go
@@ -111,7 +111,7 @@
 	ccModule := variant.(*Module)
 
 	p.archType = ccModule.Target().Arch.ArchType.String()
-	p.outputFile = ccModule.OutputFile().Path()
+	p.outputFile = getRequiredMemberOutputFile(ctx, ccModule)
 
 	if ccModule.linker != nil {
 		specifiedDeps := specifiedDeps{}
diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go
index 953e85f..2c8e311 100644
--- a/cc/library_sdk_member.go
+++ b/cc/library_sdk_member.go
@@ -354,7 +354,7 @@
 	// If the library has some link types then it produces an output binary file, otherwise it
 	// is header only.
 	if !p.memberType.noOutputFiles {
-		p.outputFile = ccModule.OutputFile().Path()
+		p.outputFile = getRequiredMemberOutputFile(ctx, ccModule)
 	}
 
 	// Separate out the generated include dirs (which are arch specific) from the
@@ -388,6 +388,17 @@
 	}
 }
 
+func getRequiredMemberOutputFile(ctx android.SdkMemberContext, ccModule *Module) android.Path {
+	var path android.Path
+	outputFile := ccModule.OutputFile()
+	if outputFile.Valid() {
+		path = outputFile.Path()
+	} else {
+		ctx.SdkModuleContext().ModuleErrorf("member variant %s does not have a valid output file", ccModule)
+	}
+	return path
+}
+
 func (p *nativeLibInfoProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) {
 	addPossiblyArchSpecificProperties(ctx.SdkModuleContext(), ctx.SnapshotBuilder(), p, propertySet)
 }